• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

astronomer / astro-cli / 6e9dd8d1-3b8b-47cc-a01f-b67fb42c13d6
40%
main: 45%

Build:
Build:
LAST BUILD BRANCH: enhance_cli_release_process
DEFAULT BRANCH: main
Ran 24 Apr 2026 03:31PM UTC
Jobs 1
Files 203
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Apr 2026 03:25PM UTC coverage: 39.548% (+0.03%) from 39.515%
6e9dd8d1-3b8b-47cc-a01f-b67fb42c13d6

Pull #2100

circleci

jlaneve
Add `astro agent` command with Otto binary management

Adds a new top-level CLI command that downloads and launches Otto,
Astronomer's AI coding agent for Airflow. Introduces a shared
`pkg/agent/` package so other tools can reuse the same binary lifecycle.

Commands:

    astro agent                        # interactive TUI
    astro agent "fix my DAG"           # one-shot with a prompt
    astro agent -c                     # continue last session
    astro agent update                 # force-update Otto
    astro agent version                # show installed version

Otto auto-updates on launch by default (cached-latest > installed →
sync download + swap). Opt out with `astro config set -g
agent.auto_update false`.

Surrounding code fixes required to make the agent reliable:

- `config/config.go`: `saveConfig` wraps viper writes in a `gofrs/flock`
  so concurrent astro processes can't corrupt `~/.astro/config.yaml`.
  `gofrs/flock` was already a transitive dep.
- `config/context.go`: `SetContextKey` / `SetExpiresIn` work around
  viper#1106 — `viper.Set` on a nested path leaves the override layer
  holding a partial tree, so later `UnmarshalKey` silently zeros every
  untouched sibling.
- `airflow/proxy/`: `DetectAirflow` prefers the proxy hostname URL
  over the direct container port, which rotates on every
  `astro dev restart`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pull Request #2100: Add `astro agent` command with Otto binary management

250 of 562 new or added lines in 11 files covered. (44.48%)

2 existing lines in 2 files now uncovered.

25340 of 64074 relevant lines covered (39.55%)

9.56 hits per line

Uncovered Changes

Lines Coverage ∆ File
180
20.7
pkg/agent/binary.go
40
0.0
pkg/agent/start.go
29
29.27
cmd/agent.go
20
23.08
pkg/agent/logging.go
15
79.17
pkg/agent/update.go
9
0.0
pkg/agent/signal_unix.go
8
68.0
pkg/agent/af.go
6
79.29
-1.86% config/config.go
4
95.65
pkg/agent/config.go
1
82.22
0.93% config/context.go

Coverage Regressions

Lines Coverage ∆ File
1
71.92
-0.32% cmd/cloud/setup.go
1
82.22
0.93% config/context.go
Jobs
ID Job ID Ran Files Coverage
1 6e9dd8d1-3b8b-47cc-a01f-b67fb42c13d6.1 24 Apr 2026 03:31PM UTC 203
39.55
Source Files on build 6e9dd8d1-3b8b-47cc-a01f-b67fb42c13d6
  • Tree
  • List 203
  • Changed 5
  • Source Changed 4
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • CircleCI Build #6E9DD8D1...
  • Pull Request #2100
  • PR Base - main (#890248B6...)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc