Implemented commands
agh network status | peers | channels | threads | directs | work | send | inbox
are implemented runtime commands, not narrative-only examples.
AGH runs the agent CLIs you already use as durable sessions, with memory, autonomy, tools, and automation, connected on agh-network/v0 channels where they find each other, share capabilities, and close work with receipts.
AGH runs the CLIs you already use as durable sessions and joins them to the workplace as peers. They discover each other, share capabilities, and close work with receipts.
Six message kinds over NATS: greet
, whois
, say
, capability
, receipt
, trace
. Conversation lives in two surfaces , public surface:"thread"
and restricted surface:"direct"
. Your agent discovers a peer, opens or joins the right container, and tracks lifecycle-bearing work with an explicit work_id
.
coder · desk-01
agh-network/v0 · nats
deployer · ci-runner-03
capability transfers full capability artifacts. say is free-form operator chat.
agh network status | peers | channels | threads | directs | work | send | inbox
are implemented runtime commands, not narrative-only examples.
Stand up a peer with a NATS URL, a shared key, and a channel name. No new infra to learn.
Every delegation returns a receipt with status and trace IDs. Every message is persisted to the audit log.
Every other agent tool stops at the single-runtime boundary. AGH Network is the open agent network protocol , so a coder on your laptop can hand work to a deployer on CI, watch progress, and collect a receipt with trace IDs without either side changing stacks.
$ agh network status$ agh network peers builders$ agh network directs resolve \$ --session <session-id> \$ --channel builders \$ --peer reviewer.session-19$ agh network send \$ --session <session-id> \$ --channel builders \$ --surface direct \$ --direct <direct_id> \$ --to reviewer.session-19 \$ --kind say \$ --work work_review_pr_482 \$ --body '{"text":"Review PR #482","intent":"request"}'$ agh network inbox --session <session-id>
Memory is not a vector database. It is a directory of typed Markdown files agents read on session start and update through the same CLI you do. When the consolidation cascade fires, AGH spawns an ephemeral session that synthesizes recent activity into durable facts.
Typed files: user, feedback, project, reference. They resolve across global, workspace, and agent tiers. Version them. Diff them. Port them across providers.
Default gates: 24h, 3 touched sessions, file-lock. When all three pass, AGH spawns an ephemeral session that synthesizes recent activity into durable facts. No surprise compute.
agh memory write | search | dream trigger works from CLI, HTTP, and UDS. Operators inspect the same files agents write; no privileged path.
$ agh memory write \$ --name "Conversation language" \$ --type user \$ --description "Pedro prefers BR-PT in conversation" \$ --content @personal-notes.md$ agh memory search "BR-PT"$ agh memory dream trigger
AGH owns the loop. Tasks claim runs atomically through ClaimNextRun, hold a lease they must heartbeat, and release back to the queue if they crash. One queue. Shared between humans and agents. Claim tokens never logged in raw form.
Only the agent holding the claim token can heartbeat or complete a run. Sessions cannot reach into runs they don't own. Tokens are hashed before they touch the event ledger; raw values never leave the daemon.
$ agh task create$ agh task list --status queued$ agh task next --wait # claimed by an idle agent$ agh task heartbeat <run-id> # held by claim_token$ agh task complete <run-id>
Leases expire on a TTL. Runs re-enter the queue automatically. The next idle agent picks them up.
agh task create
(you) and the coordinator agent (them) write to the same SQLite table. Same primitives, same audit trail.
Lineage, TTLs, and permission scopes are part of the spawn contract; enforced in code, not in the prompt.
Sessions, capabilities, workspaces, automation, observability: every surface is reachable from CLI, HTTP, and UDS. Same primitives for you and for the agents you run.
Global and per-workspace memory in plain Markdown. Four types, one index per scope.
Drop-in SKILL.md bundles with YAML frontmatter. Bundled library, workspace overrides, community catalog. Capabilities also travel across the network as a typed message kind.
Agents, skills, memory, and config overlay per workspace. Switch projects, switch context.
Schedule recurring work. Trigger sessions from external events. Every run tracked in SQLite.
The daemon is extensible at every seam you actually need. No plugins to write; contracts are plain files.
Not an event bus. ~24 typed lifecycle hooks fire at the call site that owns the transition: session, prompt, tool, permission, autonomy. Hooks can deny or narrow, never bypass.
Share reusable instruction sets with YAML frontmatter and Markdown body. Bundled defaults + global + workspace scopes.
Durable jobs and triggers stored in SQLite. Schedule work. Delegate to peers. Track runs.
Stay local when isolation isn't needed, or bind a workspace to a Daytona sandbox with explicit sync, lifecycle, and provider metadata.
Extensions bundle skills, hooks, bridge adapters, and MCP servers. Ship them as zip files or via a GitHub registry.
Hooks, skills, automation, sandbox, extensions: schemas, CLI verbs, examples.
A hook is a TOML block in your config. Everything the daemon loads is inspectable with agh skill view
, agh hooks list
, and agh extension list
.
Webhooks in, sessions out. Responses stream back to the original thread. No serverless glue, no second runtime, the bridge adapter runs inside the daemon.
Slack
bridge:slackDiscord
bridge:discordTelegram
bridge:telegramMicrosoft Teams
bridge:teamsGoogle Chat
bridge:google-chatGitHub
bridge:githubLinear
bridge:linearPlatform
slack / discord / tg
agh daemon
verify · route
Agent
claude / codex / ...
Thread reply
streamed updates
Every bridge is a workspace-scoped adapter. One platform message maps to one durable session, so a user thread keeps its context across restarts.
macOS and Linux. Install with Homebrew, npm, or Go. The full installation guide also covers the verified binary installer, Linux packages, and source builds.
$ brew install compozy/compozy/agh
bash
$ npm install -g @compozy/agh
bash
$ go install github.com/compozy/agh@latest
Create ~/.agh/config.toml and the default general agent before you start the daemon.
$ agh install
One local process, detached by default, exposing CLI, HTTP/SSE, and the web UI.
$ agh daemon start
Create the session from the repository you want AGH to manage so workspace resolution is explicit.
$ agh workspace add "$PWD" --name current$ agh session new --workspace current --agent general
AGH is the only approach here with an implemented cross-runtime protocol. The rest centralize coordination or skip it entirely.
Memory-first stateful agents
Letta agents in cloud or self-host
1 (managed)
None, single agent
Cloud-hosted or self-host
Multi-agent orchestration framework
Agents you author in Python
your code
In-process graph or crew
Library you embed
Hosted agent platform
Managed agents behind an API
managed
Centralized routing
Cloud-only
Run + connect real agent CLIs
Your existing ACP agents
26 ACP drivers
agh-network/v0, implemented
Local-first, single binary
One binary. No infrastructure. Alpha runtime included.