-
Notifications
You must be signed in to change notification settings - Fork 5
Releases: launchapp-dev/animus-cli
v0.5.14
8777229 Assets 7
v0.5.13
fde96ca Assets 7
v0.5.12
Full Changelog: v0.5.11...v0.5.12
Assets 7
v0.5.11 — Chat streaming fidelity + full provider matrix
v0.5.11 — Chat streaming fidelity + the full provider matrix
animus chat send --stream --json now streams everything the agent does, and all four provider tools (claude / codex / opencode / gemini) were brought up to current-CLI compatibility so their tool/command activity streams too.
Fixed (CLI)
- chat
tool_resultstreams the tool output — previously emitted onlysuccess: bool, dropping the content. Now carries the provider's full output (command stdout, file contents, structured JSON). - chat
tool_resultreports the human tool name — correlates atoolu_...id back to the precedingtool_call's name.
Provider compatibility — run animus plugin update
The provider plugins evolved past their parsers as the upstream CLIs changed. All released at v0.2.4 on the stable v0.1.13.2 protocol lineage:
- codex v0.2.4 — codex emits sandbox shell runs as
command_executionitems (notfunction_call); these were dropped. Now mapped totool_call+tool_result. - opencode v0.2.4 — opencode v1.2 wraps frames as
{type, part}with tool details underpart.state; parser read old keys →unknown_tool. Now parses the part shape (old format still handled). - gemini v0.2.4 — gemini CLI refused headless runs in an untrusted directory (exit 55); provider now sets
GEMINI_CLI_TRUST_WORKSPACE=trueon spawn.
All four providers verified end-to-end through animus chat against official signed builds.
Full Changelog: v0.5.10...v0.5.11
Assets 7
v0.5.10 — Animus Chat (CLI-first)
v0.5.10 — Animus Chat
Multi-turn conversations through the CLI, streamed as JSON, built on the existing provider plugins (claude/codex/gemini) — no new plugin, no new API key.
Added
animus chat new|send|get|list— durable multi-turn conversations.send --stream --jsonemits oneChatStreamEventper line to stdout (turn_started / text_delta / tool_call / tool_result / metadata / turn_completed) — the surface to build chat apps on.animus cost conversation <id>— per-conversation token + USD rollup.- Provider-owned continuity — each turn is resume XOR replay, never both: with a live provider
session_idthe prompt is just the new message (the CLI tool's native session carries history); with no session, Animus replays its stored transcript. Single full-history retry on stale-session. No double-counted context. - Conversation store at
~/.animus/<repo-scope>/chat/<id>/(meta.json+ append-onlymessages.jsonl), path-traversal-guarded. User message persists before the provider call (crash safety); the provider's nativesession_idis captured per turn. - Reuses
SessionBackendResolver(theanimus agent runpath), so the wrapped CLI tool reaches Animus's MCP server viamcp_endpoint— the model can callanimus.*tools mid-conversation.
Verified end-to-end
A two-turn conversation against the claude provider: turn 1 (resumed=false) streamed thinking + tool calls + reply; turn 2 (resumed=true, same session_id) correctly recalled context from the resumed native session. Transcript + cost rollup persisted.
Deferred to v0.5.11
Direct-API chat_provider plugins (own the turn structure, intercept tool use) and the OpenAI-compat HTTP surface. The turn loop is factored behind a TurnProducer seam so that path is additive. See docs/architecture/animus-chat.md.
Full Changelog: v0.5.9...v0.5.10
Assets 7
v0.5.9
Full Changelog: v0.5.8...v0.5.9
Assets 7
v0.5.8
Full Changelog: v0.5.5...v0.5.8
Assets 7
v0.5.5 — authoring ergonomics + governance + protocol cleanup
Highlights
This release ships seven authoring-side features, two architectural design proposals, a docs sweep for previously-hidden YAML blocks, and a v0.5.7 protocol-cleanup cluster.
Added
worktree:block at workflow + per-phase level withmode: auto|required|skip,cleanup,base_ref. Replaces implicit, always-on worktree creation.secrets:block +${secret.<name>}interpolation. Compile-time resolution, required-but-unset fails with file + line.- Sensitive-interpolation lint. Warns on
${VAR}for env vars matchingTOKEN|KEY|SECRET|PASSWORDoutside thesecrets:block. - Trigger plugin authoring story.
animus plugin scaffold trigger <name>+examples/triggers/fswatch/reference plugin + authoring guide. - Kernel-level OAuth broker for HTTP MCP servers.
oauth:block withclient_credentials/refresh_token/manual_bearerflows; 0600 cache, 60s skew margin, no token leakage. - Basic eval framework.
evals:block on phases withcommand+llm_judgechecks,pass_threshold,on_fail: rework|block. Schema lands; runtime enforcement deferred to the out-of-tree workflow-runner plugin pin bump. - Budget caps +
animus costCLI. Per-workflow + per-phasebudget:block (max_tokens,max_cost_usd,on_exceed); cost-state aggregator + 4animus costsubcommands. animus plugin doctorsubcommand showing every preflight role with its installed claimants.animus plugin install --as-kind <KIND>+ auto-increment on collision. Daemon-side translator rewrites<installed_kind>/<verb>to<native_kind>/<verb>so plugins stay unmodified.animus subject delete --kind <K> --id <ID> --yesCLI verb.
Architecture proposals (design only)
docs/architecture/multi-tenant-rbac-v0.5.5.md— four-chokepoint RBAC scaffold; v0.6 implementation path.docs/architecture/knowledge-rag-binding-v0.5.5.md— memory plugin binding shape; references the already-publishedanimus-memory-store-protocolv0.1.0.
Docs sweep
schedules:+triggers:+daemon:blocks documented in workflow-yaml.md — features had shipped but were undocumented.- Plus
animus-plugin-templatesubject pin v0.1.0 -> v0.5.7.
Protocol cleanup (v0.5.7)
launchapp-dev/animus-protocolv0.5.7 restoresMETHOD_SUBJECT_DELETE,SubjectBackend::deletedefault impl,BackendError::Unsupported,subject_backend_mainhelper. Fixes the v0.1.14 'sync' regression that silently wiped these surfaces.launchapp-dev/animus-subject-defaultv0.1.4 +animus-subject-requirementsv0.1.8 +animus-subject-linearv0.1.5 released withSubjectBackend::deleteimplementations. Linear also carries a real data-loss bug fix (updatewith patch.comment was overwriting issue descriptions).
Plugin-org maintenance
- All canonical Rust plugins now have published binary assets for Linux x86_64 + Linux aarch64 + macOS aarch64 + macOS x86_64 (Intel runner queue stuck-job issue resolved by switching to
macos-15-intelrunner label; aarch64-linux switched from cross-rs to nativeubuntu-24.04-armrunner). - New
launchapp-dev/animus-tuiv0.1.0 standalone TUI control plane (k9s-style; 7 views;ratatui+crossterm+tokio+animus-control-protocol).
Carried forward to v0.5.8
animus plugin rename <name> --to <new-kind>for post-install rename.- 2
TODO(codex-p2)items in the kind translator (multi-kind subject backends,--nameinstall override edge cases). animus-subject-linear+animus-subject-sentryprotocol pin bump to v0.5.7.
See CHANGELOG.md for the full diff.
Full Changelog: v0.5.4...v0.5.5
Assets 7
v0.5.4 — delete agent-runner sidecar; auto-update + opt-in metrics
Highlights
~10,000 LOC net surface-shrink by deleting the agent-runner sidecar after recognizing it was vestigial post-plugin-extraction. Provider plugins (claude/codex/gemini/opencode) handle CLI invocation; animus agent run is reimplemented as a thin client over SessionBackendResolver.
Major changes
agent-runnersidecar deleted. ~8000 LOC removed;animus agent {run,status,cancel,control}now dispatches directly to provider plugins via the existing plugin host. The Unix-socket bridge,runner_helperssupervisor, lockfile, and shared-secret auth are gone. The publishedanimus-agent-runner-protocolcrate is marked deprecated.animus runner restart-statsremoved. No more sidecar to restart.DaemonHealthschema: newprovider_plugins_healthy: boolfield; legacyrunner_connected/runner_pidkept for wire back-compat (alwaysfalse/None).animus agent controlreturnsunavailable(exit code 5) under the provider-only model.
Added
animus self update— configurable auto-update with four modes (off / notify / prompt / auto), channel filtering (stable / prerelease), atomic same-directory binary swap. Env:ANIMUS_AUTO_UPDATE_MODE,ANIMUS_AUTO_UPDATE_DISABLE.animus metrics— opt-in anonymous event counters with first-run prompt. Hard opt-in; closed-enum events with bounded tag types; no code/paths/repos/prompts ever in the payload. Env kill-switch:ANIMUS_METRICS_DISABLE=1. Default endpoint is a placeholder pending product confirmation.system_prompt_fileon AgentProfile — load the system prompt from an external UTF-8 file (resolved relative to source YAML). Inlined verbatim at compile time.- HTTP MCP servers in workflow YAML —
mcp_servers:entries can declaretransport: http+url:so workflows can reach remote MCPs (e.g. Robinhood's hosted MCP) without bridge scripts.
Infrastructure
- Rust toolchain pinned to 1.96.0 via
rust-toolchain.toml.
See CHANGELOG.md for the full diff.
Assets 7
v0.5.3 — surface-shrink: 17 → 12 crates
Changelog - v0.5.3
Release Date
2026年06月03日
Overview
v0.5.3 is a pure surface-shrink release. Workspace shrinks from 17 → 12 crates across v0.5.2 + v0.5.3 (the in-tree oai-runner extraction lived in v0.5.2; the orchestrator-git-ops delete + three folds land in v0.5.3 as the cleanup wave). The kernel is now mostly CLI + daemon + plugin-host + core + config + a small support tail.
Per Sami's coding philosophy ("clean smaller surfaces are easier and smaller surfaces that can be made bulletproof or hot swapped"), every change here is net-shrink, no behavior change.
Surface-shrinks landed
Delete orchestrator-git-ops (1472 LOC)
The crate had zero Rust consumers — only its own Cargo.toml referenced it. The docs claimed it "owns git automation helpers" but no code imported it; actual worktree management lives in animus-workflow-runner-default (out-of-tree plugin) and the daemon dispatch path. Pure delete.
Extract in-tree oai-runner (5483 LOC)
crates/oai-runner/ was the standalone OpenAI-compatible agentic runner binary. launchapp-dev/animus-provider-oai-agent v0.1.3 already ships the same code wrapped in the stdio plugin protocol, plus a separate animus-oai-runner release archive. The in-tree crate became redundant when the plugin was published.
- Pinned
animus-provider-oai-agentv0.1.3 indefault-install.json+plugin_registry::DEFAULT_OAI_AGENT_PLUGINS(constant already existed). - New
resolve_oai_runner_binary()helper inorchestrator-core::runtime_contract: searches$ANIMUS_OAI_RUNNER_BIN→~/.animus/plugins/animus-provider-oai-agent/bin/animus-oai-runner→ legacy flat path →$PATH. agent-runtime-config.v2.jsoncleared the hardcoded"executable": "animus-oai-runner"so the resolver kicks in.- Stripped
animus-oai-runnerfrom.cargo/config.toml,Dockerfile,.github/workflows/release.yml,scripts/install.sh(legacy archive support kept for upgraders).
Known v0.6+ gap: animus plugin install is currently single-binary-per-plugin. The plugin's release ships TWO archives (animus-provider-oai-agent-*.tar.gz + animus-oai-runner-*.tar.gz); only the first is pulled by animus plugin install launchapp-dev/animus-provider-oai-agent. After install, the animus-oai-runner binary is NOT on disk. v0.6 will add multi-binary plugin install support OR publish animus-oai-runner as its own repo. Existing operators may need a manual install in the interim.
Fold orchestrator-providers → orchestrator-core::subject_adapter (2006 LOC)
The crate was misnamed (not "providers" — provider plugins live out-of-tree). 73% of it was subject_adapter.rs (subject backend routing trait + impl); 11% was the git project adapter; 9% was the builtin project adapter. Only orchestrator-core depended on it. Folded as a sub-module:
subject_adapter.rs→crates/orchestrator-core/src/subject_adapter/adapter.rsgit.rs→crates/orchestrator-core/src/subject_adapter/git.rsbuiltin.rs→crates/orchestrator-core/src/subject_adapter/builtin.rslib.rs→crates/orchestrator-core/src/subject_adapter/mod.rs
2 callers updated: orchestrator-core itself + animus-runtime-shared::ensure_execution_cwd. Known v0.6+ follow-up: subject_adapter::TaskServiceApi and services::TaskServiceApi now coexist in orchestrator-core (identically named); disambiguation via as Provider... aliases preserved. Worth a rename pass.
Fold orchestrator-store → orchestrator-core::store (180 LOC)
Trivial — 180 LOC of persistence primitives, smaller than most files in the kernel. Folded into orchestrator-core/src/store/mod.rs. tempfile dep promoted from dev-only to prod in orchestrator-core (the store helpers use it in production paths). 2 callers updated: orchestrator-core + animus-runtime-shared.
Fold orchestrator-session-host → orchestrator-plugin-host::session (2406 LOC)
The crate's own lib.rs docstring said "Host-side glue that wires the upstream SessionBackend trait to the Animus STDIO plugin protocol" — literally plugin-host glue. All 5 source files (incl. plugin_supervisor.rs and session_backend_resolver.rs) folded under crates/orchestrator-plugin-host/src/session/.
- 6 import sites updated across
agent-runner,orchestrator-cli,orchestrator-daemon-runtime. animus-session-backend,orchestrator-logging,async-trait,uuid(+rt-multi-threadtokio feature) absorbed into plugin-host's deps.- Re-exports inside
session/mod.rspreserve the old top-level surface; consumers useorchestrator_plugin_host::session::...(no top-level plugin-host re-export — keeps the namespace boundary visible).
Codex round 1 P2 fix (main loop)
docs/architecture/crate-map.mdclaimed "13 crates" and still listedorchestrator-session-hostas a current crate. Fixed: "12 crates" + removed the stale row; consolidated the description into theorchestrator-plugin-hostrow.
Codex round 1: 0 P1, 1 P2 (fixed inline).
Numbers
- Workspace members: v0.5.0: 17 → v0.5.1: 17 → v0.5.2: 15 → v0.5.3: 12.
- Net LOC delta on main vs v0.5.2: ~−1700 (the folds are roughly LOC-neutral as moves; the wins come from deleted Cargo.toml + README files and tightened doc tables).
- ao-cli tests: 1774 passing (down from 1917 at v0.5.1; the delta reflects the deleted in-tree oai-runner tests + the deleted store + providers test modules). 6 pre-existing testkit-binary failures unchanged. 11 ignored.
- Codex rounds on main merge: 1 → 0 P1, 1 P2 (fixed inline).
Architectural shape after v0.5.3
The remaining 12 crates, grouped:
Core (5): orchestrator-cli, orchestrator-core (with the folded subject_adapter + store modules), orchestrator-config, orchestrator-daemon-runtime, agent-runner
Plugin foundation (4): orchestrator-plugin-host (with the folded session module), animus-plugin-protocol, animus-plugin-runtime, animus-runtime-shared
Support (3): orchestrator-notifications, orchestrator-logging, protocol
That's the "glue" shape Sami's coding philosophy was after — the kernel is CLI + daemon + plugin host + core. Everything else is a plugin (out-of-tree) or shared infrastructure consumed by both kernel and plugins.
🚧 v0.6 carry-forwards from this release
- Multi-binary plugin install. Today
animus plugin installis single-binary; the OAI agent plugin ships two binaries (animus-provider-oai-agent+animus-oai-runner). v0.6 should add multi-binary install support ORanimus-oai-runnershould be published as its own repo. - Subject adapter trait rename.
subject_adapter::TaskServiceApi/services::TaskServiceApicollide inorchestrator-corepost-fold. Theas Provider...aliases work today; a clean rename would close the disambiguation surface. - Standalone
launchapp-dev/animus-runtime-sharedrepo needs Cargo.toml updated when this ships: drop theorchestrator-storegit dep —fsync_renamenow lives underorchestrator_core::store::fsync_rename. orchestrator-notificationsextraction (1.5k LOC) — could be anotifierplugin (the symmetric inverse of triggers). Not done in v0.5.3.agent-runnerextraction to a runner plugin (10.5k LOC) — biggest single-crate move; would mirror theworkflow-runner-v2→animus-workflow-runner-defaultswap in v0.5.1. Architectural cleanup; deferred.
Upgrade
animus daemon stop curl -fsSL https://raw.githubusercontent.com/launchapp-dev/animus-cli/main/scripts/install.sh | bash animus plugin install-defaults --include-subjects --include-transports # OAI users: also install the agent plugin animus plugin install launchapp-dev/animus-provider-oai-agent animus daemon preflight animus daemon start --autonomous