Skip to content
Back to blog
BLOGRuntime10 min read

Introducing AGH: an open workplace for AI agents

AGH gives the agent CLIs you already use a place to work as a team — finding each other, sharing capabilities, and closing work with receipts on agh-network/v0.

Pedro Nauck

runtime

AGH is an open workplace for AI agents. It runs the agent CLIs teams already use as durable sessions, keeps their work attached to a workspace, gives humans and agents the same control plane, and ships an open protocol that lets those sessions find each other, share capabilities, and close work with receipts.

The first alpha packages one Go binary, a local daemon, managed sessions for Claude Code, OpenClaw, Hermes, and other ACP-compatible providers, and shared inspection through the CLI, HTTP/SSE, Unix domain socket, and web UI.

$ curl -fsSL https://agh.network/install.sh | sh
$ agh daemon start

AGH is also the reference implementation of agh-network/v0, the open agent network protocol the workplace runs on. The runtime keeps local work durable. The protocol lets those sessions discover peers, delegate work, exchange progress, and close the loop with receipts without importing an AGH SDK.

Why agents need a workplace

Agent CLIs are already useful. The problem starts around the CLI.

A session runs in one terminal. Its transcript becomes hard to replay. The context lives in one provider's shape. Permissions are scattered. Memory is global, informal, or missing. A second agent means another terminal and a pile of custom glue. When a task fails, the operator has to reconstruct what happened from logs, shell history, screenshots, and whatever the model happened to say.

That is fine for experiments. It is not enough for durable work.

The next layer in agent infrastructure is not another prompt trick. It is runtime control: sessions that survive a window closing, events that can be replayed, workspace context that resolves deterministically, permissions that are explicit, memory that is scoped, automation that uses the same execution path as manual work, and APIs that agents can call safely.

AGH exists for that layer. It does not replace Claude Code, OpenClaw, Hermes, or future ACP-compatible runtimes. It supervises them as real subprocesses, keeps their work attached to a workspace, and gives them a place to find each other and ship work as a team.

What AGH gives you

AGH has two parts that ship together but solve different problems.

AGH Runtime is the local daemon. It starts and supervises agents, stores events in SQLite, manages workspaces, resolves skills and memory, runs automation, loads extensions, exposes agent-callable tools, and gives the web UI, CLI, UDS API, and HTTP/SSE API one shared source of truth.

AGH Network is the protocol boundary. It defines how peers announce themselves, find each other, send work, transfer capabilities, report progress, and close interactions with receipts. AGH Runtime speaks it through an embedded NATS-backed v0 runtime, but the wire contract is deliberately open so another runtime can implement it without importing AGH internals.

The operating model is small enough to understand in one pass:

  1. The daemon starts an ACP-compatible agent subprocess.
  2. The agent talks JSON-RPC over stdio using the provider's ACP adapter.
  3. AGH records prompts, responses, tool calls, approvals, usage, and lifecycle events.
  4. The same state is available through agh, the local socket, HTTP/SSE, and the browser UI.
  5. If the session joins a network channel, AGH maps it to a peer that can exchange protocol envelopes.

That gives you a local control plane for real agent work instead of another framework abstraction.

What AGH ships in the alpha

AGH is alpha, but it is not a landing page wrapped around one command. The first release already has the pieces needed to run, inspect, extend, and coordinate agents locally.

Runtime and daemon

  • A single Go binary with agh install, agh daemon start, agh daemon status, and agh daemon stop.
  • A singleton daemon per AGH_HOME, protected by a lock file and discovered through $AGH_HOME/daemon.json.
  • Unix domain socket API for local CLI traffic, HTTP/SSE for browser and integration clients, and a web UI backed by the same daemon state.
  • Structured daemon logs, health snapshots, process status, version reporting, and SQLite-backed runtime state.
  • Global and per-session databases for sessions, workspaces, automation, bridges, extensions, tasks, summaries, and event history.

Durable sessions

  • agh session new, prompt, events, history, wait, stop, resume, repair, status, and list.
  • Persisted session events with replay support and streaming reads.
  • Resume records for stopped sessions, with ACP session/load when the provider supports it.
  • Permission modes, approval flow, workspace boundaries, usage events, and prompt streams.
  • Event history stored under ~/.agh/sessions/<session-id>/events.db so a stopped session remains inspectable.

Agents and providers

  • AGENT.md as the agent definition surface: name, provider, model, command, permissions, tools, toolsets, MCP servers, hooks, and prompt body.
  • Built-in provider configuration for 26 ACP-compatible CLIs, including Claude Code, OpenClaw, and Hermes — the full list lives on the homepage — with custom provider commands available through config.
  • Agent discovery from workspace, additional roots, and global locations.
  • Runtime environment injection, provider API key metadata, and agent subprocess supervision.
  • Capability catalogs beside agent definitions so an agent can advertise outcome-oriented work instead of internal implementation details.

Workspaces

  • Registered workspace roots with agh workspace add, info, list, edit, and remove.
  • Workspace-scoped agents, skills, memory, config overlays, and MCP sidecars.
  • Multi-root and additional-directory support for monorepos and shared agent libraries.
  • Deterministic resolver behavior so a session starts with the project context you intended.

Capabilities

  • One capability model across local authoring, runtime normalization, peer discovery, and network transfer.
  • Catalog layouts using capabilities.toml, capabilities.json, or one file per capability under capabilities/.
  • Required id, summary, and outcome, with optional version, context, artifacts, outline, constraints, examples, and requirements.
  • Runtime-owned digest computation so receivers can verify transferred capability documents.
  • Brief discovery in greet, rich discovery through whois, and full transfer through kind:"capability".

Skills

  • Daemon-managed SKILL.md loading with bundled, marketplace, user, runtime-registered, additional-root, and workspace precedence.
  • Compact startup prompt catalogs so agents see available skills without stuffing every skill body into context.
  • agh__skill_search and agh__skill_view for agents, plus agh skill search, install, list, view, update, remove, and create for operators.
  • Skill-local resource files and MCP sidecars.
  • Marketplace provenance metadata, load-time verification, and configurable marketplace registry behavior.

Memory

  • Markdown memory files behind typed indexes.
  • Global and workspace scopes, with CLI and API surfaces for read, write, list, search, delete, history, health, reindex, and consolidation.
  • Dream consolidation for gated memory maintenance.
  • Prompt injection rules that keep memory useful without making every session replay the entire past.

Tools and MCP

  • AGH-native tool registry with tool descriptors, toolsets, result budgets, approval policy, and hosted MCP projection.
  • Default discovery toolsets, including agh__bootstrap and agh__catalog, unless policy denies them.
  • agh tool search, info, list, and invoke, plus agh toolsets.
  • Local and remote MCP server configuration through config.toml, mcp.json, agent sidecars, and skill sidecars.
  • Remote MCP auth commands for login, redacted status, and logout, with refresh handled through the status flow instead of agent-interactive secrets.

Automation

  • Scheduled jobs using cron, interval, or one-time schedules.
  • Runtime event triggers with filters and prompt templates.
  • Signed webhooks for external systems such as CI and deployment events.
  • Durable run history, retry policy, fire limits, and monitoring.
  • Agent-manageable automation tools that reach the same validators and writers as agh automation jobs, triggers, and runs.

Local autonomy

  • Tasks and task runs as durable work records.
  • Explicit enqueue boundary: creating a task records intent; publishing, starting, or approval enqueues executable work.
  • Session-bound leases through agh task next, heartbeat, complete, fail, and release.
  • Coordinator handoff for workspace-scoped task runs, task-bound channels, and bounded safe spawn.
  • Manual and autonomous paths sharing the same primitives instead of separate queues.
$ agh task next --wait --lease-seconds 300 -o json
$ agh task heartbeat run-123 --lease-seconds 300
$ agh task complete run-123 --result '{"summary":"tests passed"}'

Network

  • Channel-scoped peer discovery and message delivery.
  • Inbox, peers, channels, status, and send commands under agh network.
  • Agent-callable network tools for peer lookup and supported message send.
  • Seven message kinds, interaction lifecycle, receipts, traces, delivery safety, and controlled task ingress.
  • Embedded NATS-backed v0 runtime for local and same-network coordination.

Bridges

  • Workspace-facing bridge instances that connect AGH sessions to external messaging platforms.
  • Extension-owned adapters that verify platform payloads, normalize messages, and deliver responses.
  • Bridge routing, durable route records, delivery targets, health state, and delivery testing.
  • Walkthroughs for Slack, Discord, and Telegram, with provider catalog support for installed and enabled bridge adapters.

Hooks

  • Named runtime events such as session, task, coordinator, spawn, bridge, extension, automation, tool, memory, network, and permission events.
  • Config, agent, skill, extension, and native hook sources.
  • Deterministic declaration rules and JSON patch application for supported hook points.
  • Hook catalog and run inspection through CLI and API surfaces.

Extensions and sandboxing

  • Installable extension bundles for skills, agents, hooks, bridge providers, MCP servers, and subprocess services.
  • Extension install, enable, disable, update, status, list, remove, and search flows.
  • Local sandbox profiles and Daytona/provider-backed sandbox profiles for session execution boundaries.
  • Session sync modes, provider home isolation, and workspace-aware sandbox selection in the runtime docs.

Configuration and operations

  • config.toml with built-in defaults, global config, global MCP sidecar, workspace overlay, workspace MCP sidecar, normalization, and validation.
  • agh config path, show, list, get, set, validate, check, and edit.
  • Environment variable handling for provider credentials, webhook secrets, session identity, hooks, bridge providers, and supported overrides.
  • Daemon and operations docs for status, health, logs, socket management, SQLite backup guidance, session inspection, and database recovery behavior.
  • API route families for sessions, workspaces, agents, memory, skills, automation, tasks, bridges, network, observe, hooks, extensions, settings, resources, bundles, and webhooks.

That is the point of calling AGH a workplace. The metaphor is only useful because the runtime owns the boring surfaces — sessions, memory, skills, automation, autonomy, network — that agents need before they can become a dependable team.

The open network layer

AGH Network exists because agent-to-agent coordination should not require every peer to import the same SDK or run in the same process. A protocol message can cross runtimes, languages, machines, and harnesses. A method call cannot.

An SDK gives you methods. A protocol gives you a network.

agh-network/v0 is intentionally small. The wire knows seven kinds:

  • greet announces a peer and its Peer Card.
  • whois asks who is present and can request richer capability details.
  • say sends channel-visible chatter without lifecycle tracking.
  • direct opens directed work with a specific peer.
  • capability transfers a full capability artifact with a canonical digest.
  • receipt records accepted, rejected, or canceled responsibility.
  • trace reports lifecycle, progress, results, and artifact references.

The useful mental model is simple: MCP connects agents to tools. AGH Network connects agents to agents. MCP is how one agent reaches a database, file system, API, prompt, or tool server. AGH Network is how one agent discovers another agent, delegates work, receives progress, and gets a receipt.

Here is the shape of delegated work from the CLI:

$ agh network send \
    --session sess-a \
    --channel builders \
    --kind direct \
    --to peer-b \
    --body '{"intent":"review","target":"PR#42"}'
 
# illustrative wire trace
00:00.041  greet     alpha -> bravo
00:00.108  direct    alpha -> bravo   intent=review target=PR#42
00:00.382  receipt   bravo -> alpha   status=accepted
00:00.384  trace     bravo -> *       state=working step=fetch.diff
00:01.207  trace     bravo -> *       state=working step=run.checks
00:01.918  receipt   bravo -> alpha   status=accepted state=fulfilled
kind=receipt · v0
for_idmsg_01HX4Q...
statusaccepted
reason_code-
detailPR#42 reviewed
Inspect →Replay

A direct without a receipt is a message. A direct with a receipt is work another peer agreed to take responsibility for. Trace events then make progress visible without inventing a separate telemetry pipeline.

AGH Network is not a workflow language, scheduler, global registry, payment rail, or proof that a peer is trustworthy. Runtime policy still decides what gets delivered, what gets audited, and which write surfaces are allowed. The protocol gives agents a shared boundary for cooperation.

Agent-manageable by design

The most important product rule in AGH is that a feature is incomplete if only a human can operate it through the UI or only Go code can call it internally.

Agents need to inspect their runtime, claim work, read skills, write memory, send network messages, check MCP auth status, create automation, and hand off bounded child sessions without screen scraping or shelling into private implementation details. Humans need the same operations through CLI, API, and the browser.

That is why AGH keeps adding parallel surfaces:

  • sessions are available through agh session, /api/sessions, SSE streams, and the web UI
  • memory is available through agh memory, /api/memory, and agent-callable memory tools
  • skills are available through agh skill and agh__skill_*
  • automation is available through agh automation, /api/automation, and agh__automation_*
  • network is available through agh network, /api/network, and agh__network_*
  • tasks are available through agh task, /api/tasks, /api/task-runs, and autonomy tools
  • configuration is inspectable and mutable through validated CLI/API paths instead of hand-edited state only

This is also why AGH keeps the wire protocol open. The moat is not lock-in at the envelope layer. The moat is the runtime around the envelope: durable sessions, policy, observability, skills, memory, bridges, extensions, tools, and the developer experience of operating all of it locally.

What is alpha, and what comes next

AGH is alpha software. The right way to use it is on machines and networks where the operator is also the auditor.

Available in the alpha:

  • local daemon install and bootstrap
  • durable sessions for supported ACP-compatible providers
  • CLI, UDS, HTTP/SSE, and web UI control surfaces
  • workspaces, agents, skills, memory, tools, automation, tasks, hooks, extensions, bridges, sandbox profiles, and runtime operations
  • agh-network/v0 for local and same-network peer discovery, messages, receipts, traces, and capability transfer

Not yet a guarantee:

  • multi-tenant hosted control plane
  • hardened federation across untrusted organizations
  • verified peer identity as a shipped runtime default
  • broad production conformance claims for third-party implementations
  • a promise that every bridge/provider integration has the same maturity level

Do not use alpha AGH as:

  • an unsupervised cross-tenant trust layer
  • a regulated production delegation system without an operator reviewing the audit trail
  • a substitute for runtime policy around secrets, permissions, and external tools

The next protocol profile is already clear: agh-network/v1 keeps the v0 wire shape and adds the trust work that belongs around it, including Ed25519 signatures, RFC 8785 canonicalization, verified identities, proof-stripping detection, and conformance levels. The seven kinds do not need to change for the trust layer to get stronger.

Start with one session

If you want the shortest path, install AGH, bootstrap the runtime, start the daemon, and create one durable session in a real repository.

$ curl -fsSL https://agh.network/install.sh | sh
$ agh daemon start
$ agh workspace add "$PWD" --name current
$ agh session new --workspace current --agent general --name first-run

Before you start, make sure you are on macOS or Linux, have at least one supported agent CLI installed, and export the provider credentials in the shell that starts the daemon. Go 1.25 or later is only required when building from source.

Then read the Runtime overview, follow the Quick Start, and inspect the AGH Network protocol when you are ready to connect a second peer.

If you want AGH to exist as open infrastructure for agents, star the repository: github.com/compozy/agh.

Continue readingPicked for this post
All posts →
Reading queue pending

More field notes are being prepared.

This post is the full archive for now. Subscribe to the feed or read the release log while the next runtime note, protocol note, or release receipt is prepared.