Skip to main content

agent2you

Deploy a team of chat-resident AI agents from declarative manifests: each agent is one container holding Hermes (the employee), litellm (the failover chain), acp2api (an OpenAI endpoint over ACP) and the subscription coding CLIs (Claude Code, Codex, opencode, cline) that are its brain and hands.

The design was extracted from a production fleet that runs infrastructure, product and PM agents as colleagues in Mattermost channels. Every decision in this pack — one container per agent, no provider API keys, chat as the only inter-agent surface, generated-not-hand-written configs — was measured there first.

What an agent is

   chat platform (Mattermost / Telegram / Slack / ...)
        │  @mention
   ┌────┴─────────────────────────────────────────┐
   │  hermes      presence, sessions, memory, cron │
   │  litellm     failover: next brain on 429      │   one
   │  acp2api     OpenAI API ⇄ ACP, per-thread     │   container
   │              session continuity               │   per agent
   │  claude / codex / opencode / cline            │
   │              each spends its own SUBSCRIPTION │
   └───────────────────────────────────────────────┘

No provider API key exists anywhere in a default deployment: the CLIs log in to their own subscriptions, which is the legal basis of the arrangement — and the reason nothing here can quietly bill an API account.

Nothing is shared between agents except memory (optional, bank-per-agent) and the chat workspace. Two agents cannot interfere with each other by construction.

Quickstart

uv tool install agent2you               # or: pipx install agent2you

a2y init myfleet && cd myfleet          # a self-contained fleet workspace
$EDITOR fleet.yaml agents/ana/          # who exists, what platform, what memory
a2y render                              # manifests -> deploy/  (commit it)
a2y build                               # the agent image, pinned end to end
cp deploy/example.env deploy/.env       # secrets; a2y doctor checks parity
$EDITOR deploy/.env
a2y provision                           # prints the messenger account sequence
a2y up
a2y auth ana                            # sign the brains in (once; survives rebuilds)
a2y doctor                              # end-to-end checks

Adding a colleague later is one command:

a2y agent add cqrtai-pm \
  --description "Project manager for cqrtai: specs, tasks, sequencing." \
  --github-token --projects cqrtai

It validates against the whole fleet (rolling back on failure), re-renders deploy/, and prints the numbered checklist of what remains (secrets, provisioning, sign-in). The command is deliberately non-interactive so that your own assistant agent can run it: the interview happens in chat, the tool call is the answer — see docs/hiring.md. Running agents discover the newcomer without a restart: the fleet roster in every SOUL.md regenerates on a loop from the mounted manifests.

The manifests

fleet.yaml — deployment-level facts: platform (mattermost fully wired; other Hermes platforms pass their env through), memory (hindsight or none), network (bridge by default; shared VPN namespace as an advanced mode), observability (Phoenix traces, Prometheus token metrics), image tag, and defaults merged into every agent.

agents/<name>/agent.yaml — the agent: description (its card, roster entry and the reason colleagues call it), brain chain and executors, access (ssh volume, GitHub token), memory banks, extra MCP servers (mcp: — per agent, appended to the defaults the platform/memory/observability choices imply), and toolkits:.

toolkits/<name>/ — a tool and its instructions as one unit: toolkit.yaml (pinned apt/npm/uv_tools/env install, plus a verbatim dockerfile: escape hatch) and USAGE.md, which lands in the SOUL.md of every agent carrying the toolkit. Fleet-level toolkits bake into the fleet image; agent-level ones get a derived image built automatically by a2y build.

agents/<name>/SOUL.md — the persona. SOUL-shared.md is appended to everyone.

a2y render turns those into deploy/: per-agent Hermes / litellm / acp2api / hindsight configs, a compose file, and an example.env naming every variable the deployment needs. The output is deterministic — same manifests, same bytes — so the deploy tree is reviewable and belongs in git. Anything the generator does not expose: agents/<name>/overrides/<file> replaces the generated file, and hermes:/acp2api: keys in agent.yaml deep-merge into those configs.

What the pack takes care of

  • Session continuity per chat thread — the conversation-key plugin + litellm header forwarding + acp2api's conversation keying, so a thread keeps one coding-agent session instead of cold-starting per message.
  • A visible working turn — progress narration into the chat post while the agent works, the trace tucked behind the post's info card when it finishes, and mid-turn steering (/steer) delivered INTO the running turn.
  • Fleet discovery without restarts — a roster generated from every agent's own manifest, appended to each SOUL.md on a loop.
  • Routing without a classifier — untagged messages claimed by exactly one agent from Mattermost facts alone; agent-to-agent messages always need an explicit @mention, which is the loop guard.
  • Memory in tiers (optional) — a private Hindsight bank per agent written automatically, shared project banks written deliberately through tools, and bank missions pushed from the repository at every start.
  • Cost visibility — acp2api's Prometheus metrics (tokens per agent, per executor, per account) and one Phoenix trace project per agent.
  • The traps already sprung — device-code-only logins, CLAUDE_CONFIG_DIR, codex's sandbox mode, cline's self-update, the CA store, the tty-guarded bashrc, healthchecks that mean something. They are encoded, not documented.

Docs

Development and releasing

uv run --group dev pytest      # the contract: render determinism, validation, env parity
uv build                       # sdist + wheel (the vendored image ships as package data)

Releases publish to PyPI via trusted publishing (OIDC — no API token exists anywhere): bump version in pyproject.toml, commit, git tag v<version>, git push --tags. The workflow gates on the test suite and on the tag matching the version. GitHub Actions are pinned by commit SHA, not by tag — a tag can be moved onto a poisoned release; a sha cannot.

Status

Extracted from a running deployment; the mattermost + hindsight + claude/codex path is the proven one. Telegram/Slack/Discord pass through to Hermes' own adapters and are not yet exercised end to end by the maintainers.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent2you-1.1.0.tar.gz (84.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent2you-1.1.0-py3-none-any.whl (93.8 kB view details)

Uploaded Python 3

File details

Details for the file agent2you-1.1.0.tar.gz.

File metadata

  • Download URL: agent2you-1.1.0.tar.gz
  • Upload date:
  • Size: 84.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for agent2you-1.1.0.tar.gz
Algorithm Hash digest
SHA256 a0b2edbc4cd6e6ee629b682d19ce9c2384b21cf0cf13b20359b422c1494640f6
MD5 2028e42c1001dcd0afe74b5a1e48ba0d
BLAKE2b-256 3d49ae2f2f4dcb0d56d4633735bce10b0e6fd27f333b9e6816049d52560e1d81

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent2you-1.1.0.tar.gz:

Publisher: release.yml on neprel/agent2you

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agent2you-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: agent2you-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 93.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for agent2you-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 62a7aa487dda10fa559576d91ba662dd922b21c54aeb9827eebe0a647dd71fbd
MD5 e6e91b525512c9dcf0b98689227cc4fc
BLAKE2b-256 e99e38cdc91e7be3dd90ca9ec804d709da76111b04ab103743a000c1a23fee28

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent2you-1.1.0-py3-none-any.whl:

Publisher: release.yml on neprel/agent2you

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page