agent-augury
Local multi-agent collaboration — shared threads, roles, and human-in-the-loop.
Model-agnostic runtime for teams of LLM agents that keep working while teammate messages arrive.
What it is
agent-augury is a local Python runtime for running several LLM agents as a team:
- shared conversation threads with
@mentionsand broadcast - non-blocking delivery — agents keep working; messages land at the next
step() - assignable roles, optional P1–P5 collaboration protocol
- you as a first-class participant (
ask_user, Ink UI, Discord/Slack mirrors) - model-agnostic backends (OpenAI-compatible, Nous API key / OAuth)
Install it, configure agents in YAML (or the wizard), and run a session from the terminal.
You (Ink / Discord / …)
│
Session + Gateway
│
┌────────────────┼────────────────┐
▼ ▼ ▼
Agent A Agent B Agent N
(any model) (any model) (any model)
│ │ │
└────────────────┼────────────────┘
▼
Message Server (SSOT)
How teammates communicate
Agents talk through three primitives:
| Primitive | Behavior |
|---|---|
create_thread(name, participants) |
Open a named thread |
send_message(thread, content, mentions) |
Fire-and-forget post (mentions empty = broadcast) |
read_resource() |
Snapshot threads/messages when needed |
Messages are pushed into each target's inbox. On the next step(), the runtime drains that inbox into the agent's context — no blocking “wait for reply” loop.
In the Ink Surface you can direct a mid-session note with @agent-id … (omit @ to broadcast).
Roles
Give each agent a persona from config:
roles:
orchestrator:
prompt: |
You are the orchestrator. Decompose work, coordinate, and integrate results.
architect:
prompt: |
You are the architect. Design structure, tech stack, and trade-offs.
agents:
- id: agent-1
role: orchestrator
backend: { ... }
role: <name>uses a preset;role_custom: "..."is inline.- Agent ids must be unique (case-insensitive). The id
humanis reserved.
Human-in-the-loop
You are a first-class participant:
- Agents can call
ask_user(question, options?)mid-session - Your reply (and free-form
@agent-idnotes) use the same inbox path as agent messages - On a TTY with Node.js, Ink is the interactive Surface (always-on input)
agent-augury --config session.yaml
Optional Discord bots / webhook mirrors and Slack webhooks are observe (or opt-in inbound) surfaces — protocol state stays in the message server.
Collaboration protocol (optional)
A five-phase flow is available when you enable protocol: in config:
P1 EXPLORE → P2 SPLIT → P3 EXECUTE → P4 REVIEW → P5 SUBMIT
Gates require explicit group approval before advancing. Use it when you want structured team work; omit it for free-form multi-agent sessions.
Model agnostic
Backends share one interface. Mix providers per agent:
- OpenAI-compatible APIs (including OpenRouter)
- Nous Portal (API key)
- Nous Portal (OAuth device code)
type: fakeonly with--demo(tests / offline examples)
Secrets stay in environment variables; YAML stores env names only.
Quick start
Install
pip install agent-augury
Ink Surface (required for the interactive TUI):
- Install Node.js >= 22 so
npmis on yourPATH(nodejs.org). - Run
agent-augury— the wheel bundlesfronts/inksources; on first launch they are copied to a user cache andnpm installruns there. - Optional overrides:
AUGURY_INK_DIR— use a specific Ink front directory (e.g. a git checkout offronts/ink)AUGURY_PROJECT_ROOT— repo root when developing from a cloneAUGURY_CACHE_DIR— base directory for the Ink cache (default: platform cache)
Developers working from this repository can use an editable install (uv sync / pip install -e .); the checkout’s fronts/ink is picked up automatically.
Wizard
agent-augury
Run a session
agent-augury --config examples/consensus_openai.yaml
Offline / CI-style example (scripted backends):
agent-augury --demo --config examples/demo.yaml
Protocol example:
agent-augury --demo --config examples/p1_to_p5_protocol.yaml
Command-line options
| Flag | Description |
|---|---|
--config <yaml> |
Run from YAML (skips wizard) |
--demo |
Allow type: fake backends (offline / tests) |
--reconfigure |
Discard saved model settings and re-run the wizard |
--output <path> |
Wizard output path (only without --config) |
--quiet |
Suppress live event noise |
--ink |
Ink Surface (default when available) |
--ink-hello |
Ink hello against the Gateway (no full session) |
Design principles
- Keep working while listening — teammate traffic must not force a blocking wait.
- No single agent is SSOT — the message server owns shared state.
- Surfaces are views — Discord/Slack/Ink observe or interact; they do not own protocol state.
- Models are swappable — communication rules live in the runtime, not one vendor SDK.
- Humans participate — ask, answer, and
@mentionmid-session without special-casing the protocol. - Stay observable — tools, steps, and messages stream on the Wire bus for UIs and mirrors.
See DESIGN.md for implementation history and protocol details.
Attribution
Non-blocking teammate-inbox messaging is related to ideas explored by
AgentRadio
(Apache-2.0; arXiv:2607.28430). agent-augury is an independent implementation.
See NOTICE.
License
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_augury-0.6.7.tar.gz.
File metadata
- Download URL: agent_augury-0.6.7.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f907f96f2c1239e6e6073cb0cbfee5c193eea0b3669ca0b242ffe603e10b814
|
|
| MD5 |
c1090b137b6219b6c6697df70b075350
|
|
| BLAKE2b-256 |
b155d2793cc0c57f3982e87cd3811df0c72a4e93874fb7508fa6c65c8a941c3d
|
Provenance
The following attestation bundles were made for agent_augury-0.6.7.tar.gz:
Publisher:
release.yml on keepConcentration/agent-augury
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_augury-0.6.7.tar.gz -
Subject digest:
0f907f96f2c1239e6e6073cb0cbfee5c193eea0b3669ca0b242ffe603e10b814 - Sigstore transparency entry: 2825197151
- Sigstore integration time:
-
Permalink:
keepConcentration/agent-augury@c3835982471ed2354849491de2f048250bbf3b8f -
Branch / Tag:
refs/tags/v0.6.7 - Owner: https://github.com/keepConcentration
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c3835982471ed2354849491de2f048250bbf3b8f -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_augury-0.6.7-py3-none-any.whl.
File metadata
- Download URL: agent_augury-0.6.7-py3-none-any.whl
- Upload date:
- Size: 141.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10236ef8bb61af1e8f4c757e08b02874a28802749a488e9b42579cf8f0e5b674
|
|
| MD5 |
8a39ad527c0da27b0263a6d6e5666722
|
|
| BLAKE2b-256 |
2e7ebcef84acb767a16629e633a9c37d302f947e99acb715f100a62386ff0f59
|
Provenance
The following attestation bundles were made for agent_augury-0.6.7-py3-none-any.whl:
Publisher:
release.yml on keepConcentration/agent-augury
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_augury-0.6.7-py3-none-any.whl -
Subject digest:
10236ef8bb61af1e8f4c757e08b02874a28802749a488e9b42579cf8f0e5b674 - Sigstore transparency entry: 2825197191
- Sigstore integration time:
-
Permalink:
keepConcentration/agent-augury@c3835982471ed2354849491de2f048250bbf3b8f -
Branch / Tag:
refs/tags/v0.6.7 - Owner: https://github.com/keepConcentration
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c3835982471ed2354849491de2f048250bbf3b8f -
Trigger Event:
push
-
Statement type: