agent-backbone 2.0.0a0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. agent_backbone-2.0.0a0/.gitignore +27 -0
  2. agent_backbone-2.0.0a0/LICENSE +21 -0
  3. agent_backbone-2.0.0a0/PKG-INFO +183 -0
  4. agent_backbone-2.0.0a0/README.md +144 -0
  5. agent_backbone-2.0.0a0/alembic.ini +43 -0
  6. agent_backbone-2.0.0a0/docs/README.md +28 -0
  7. agent_backbone-2.0.0a0/docs/api.md +243 -0
  8. agent_backbone-2.0.0a0/docs/cli.md +214 -0
  9. agent_backbone-2.0.0a0/docs/concepts.md +158 -0
  10. agent_backbone-2.0.0a0/docs/configuration.md +156 -0
  11. agent_backbone-2.0.0a0/docs/getting-started.md +353 -0
  12. agent_backbone-2.0.0a0/docs/github-app-setup.md +227 -0
  13. agent_backbone-2.0.0a0/docs/github.md +180 -0
  14. agent_backbone-2.0.0a0/docs/how-it-works.md +270 -0
  15. agent_backbone-2.0.0a0/docs/integrations.md +47 -0
  16. agent_backbone-2.0.0a0/docs/security.md +152 -0
  17. agent_backbone-2.0.0a0/docs/status-and-roadmap.md +75 -0
  18. agent_backbone-2.0.0a0/docs/swarms.md +136 -0
  19. agent_backbone-2.0.0a0/docs/telegram.md +108 -0
  20. agent_backbone-2.0.0a0/pyproject.toml +96 -0
  21. agent_backbone-2.0.0a0/src/agent_backbone/__init__.py +3 -0
  22. agent_backbone-2.0.0a0/src/agent_backbone/api/__init__.py +1 -0
  23. agent_backbone-2.0.0a0/src/agent_backbone/api/app.py +261 -0
  24. agent_backbone-2.0.0a0/src/agent_backbone/api/auth.py +48 -0
  25. agent_backbone-2.0.0a0/src/agent_backbone/api/deps.py +72 -0
  26. agent_backbone-2.0.0a0/src/agent_backbone/api/models.py +422 -0
  27. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/__init__.py +1 -0
  28. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/agents.py +381 -0
  29. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/config.py +58 -0
  30. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/deliveries.py +69 -0
  31. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/events.py +23 -0
  32. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/help.py +42 -0
  33. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/integrations.py +47 -0
  34. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/issues.py +188 -0
  35. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/messages.py +58 -0
  36. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/plans.py +139 -0
  37. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/status.py +136 -0
  38. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/swarms.py +87 -0
  39. agent_backbone-2.0.0a0/src/agent_backbone/api/routes/webhook.py +91 -0
  40. agent_backbone-2.0.0a0/src/agent_backbone/api/session_updates.py +184 -0
  41. agent_backbone-2.0.0a0/src/agent_backbone/api/socketio_server.py +348 -0
  42. agent_backbone-2.0.0a0/src/agent_backbone/base/__init__.py +6 -0
  43. agent_backbone-2.0.0a0/src/agent_backbone/base/lifecycle.py +83 -0
  44. agent_backbone-2.0.0a0/src/agent_backbone/base/protocols.py +27 -0
  45. agent_backbone-2.0.0a0/src/agent_backbone/cli/__init__.py +261 -0
  46. agent_backbone-2.0.0a0/src/agent_backbone/cli/__main__.py +5 -0
  47. agent_backbone-2.0.0a0/src/agent_backbone/cli/_common.py +113 -0
  48. agent_backbone-2.0.0a0/src/agent_backbone/cli/agents.py +442 -0
  49. agent_backbone-2.0.0a0/src/agent_backbone/cli/server.py +218 -0
  50. agent_backbone-2.0.0a0/src/agent_backbone/cli/service.py +181 -0
  51. agent_backbone-2.0.0a0/src/agent_backbone/cli/setup.py +277 -0
  52. agent_backbone-2.0.0a0/src/agent_backbone/cli/swarms.py +127 -0
  53. agent_backbone-2.0.0a0/src/agent_backbone/config.py +697 -0
  54. agent_backbone-2.0.0a0/src/agent_backbone/fs.py +33 -0
  55. agent_backbone-2.0.0a0/src/agent_backbone/git.py +52 -0
  56. agent_backbone-2.0.0a0/src/agent_backbone/help/__init__.py +93 -0
  57. agent_backbone-2.0.0a0/src/agent_backbone/help/agent-brief.md +39 -0
  58. agent_backbone-2.0.0a0/src/agent_backbone/help/topics/agents.md +49 -0
  59. agent_backbone-2.0.0a0/src/agent_backbone/help/topics/github.md +27 -0
  60. agent_backbone-2.0.0a0/src/agent_backbone/help/topics/messaging.md +41 -0
  61. agent_backbone-2.0.0a0/src/agent_backbone/help/topics/setup.md +120 -0
  62. agent_backbone-2.0.0a0/src/agent_backbone/help/topics/swarms.md +60 -0
  63. agent_backbone-2.0.0a0/src/agent_backbone/hooks/__init__.py +10 -0
  64. agent_backbone-2.0.0a0/src/agent_backbone/hooks/claude_hook.py +251 -0
  65. agent_backbone-2.0.0a0/src/agent_backbone/hooks/install.py +160 -0
  66. agent_backbone-2.0.0a0/src/agent_backbone/models.py +201 -0
  67. agent_backbone-2.0.0a0/src/agent_backbone/recent.py +61 -0
  68. agent_backbone-2.0.0a0/src/agent_backbone/services/__init__.py +1 -0
  69. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/__init__.py +53 -0
  70. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/_file_reader.py +127 -0
  71. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/_inference.py +163 -0
  72. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/acknowledgement.py +116 -0
  73. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/launch.py +342 -0
  74. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/models.py +69 -0
  75. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/operations.py +101 -0
  76. agent_backbone-2.0.0a0/src/agent_backbone/services/agents/store.py +214 -0
  77. agent_backbone-2.0.0a0/src/agent_backbone/services/database/__init__.py +7 -0
  78. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_acks_repo.py +49 -0
  79. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_agents_repo.py +116 -0
  80. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_delivery_repo.py +207 -0
  81. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_dependencies_repo.py +57 -0
  82. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_events_repo.py +104 -0
  83. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_queue_repo.py +150 -0
  84. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_repo.py +17 -0
  85. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_settings_repo.py +41 -0
  86. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_state_repo.py +71 -0
  87. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_swarms_repo.py +101 -0
  88. agent_backbone-2.0.0a0/src/agent_backbone/services/database/_time.py +20 -0
  89. agent_backbone-2.0.0a0/src/agent_backbone/services/database/backbone_db.py +284 -0
  90. agent_backbone-2.0.0a0/src/agent_backbone/services/database/base.py +20 -0
  91. agent_backbone-2.0.0a0/src/agent_backbone/services/database/engine.py +53 -0
  92. agent_backbone-2.0.0a0/src/agent_backbone/services/database/migrations/env.py +83 -0
  93. agent_backbone-2.0.0a0/src/agent_backbone/services/database/migrations/script.py.mako +25 -0
  94. agent_backbone-2.0.0a0/src/agent_backbone/services/database/migrations/versions/2026_09_02_3fb2fe03898c_initial_schema.py +284 -0
  95. agent_backbone-2.0.0a0/src/agent_backbone/services/database/models.py +251 -0
  96. agent_backbone-2.0.0a0/src/agent_backbone/services/github/__init__.py +5 -0
  97. agent_backbone-2.0.0a0/src/agent_backbone/services/github/interface.py +408 -0
  98. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/__init__.py +11 -0
  99. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/_notify.py +46 -0
  100. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/_registry.py +92 -0
  101. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/base.py +92 -0
  102. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/__init__.py +5 -0
  103. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/_commands.py +329 -0
  104. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/_routing.py +122 -0
  105. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/_topic_discovery.py +179 -0
  106. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/_topics.py +118 -0
  107. agent_backbone-2.0.0a0/src/agent_backbone/services/integrations/telegram/interface.py +310 -0
  108. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/__init__.py +13 -0
  109. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/copy_mode.py +50 -0
  110. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/escalation.py +243 -0
  111. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/github_poll.py +190 -0
  112. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/monitor.py +133 -0
  113. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/pending.py +140 -0
  114. agent_backbone-2.0.0a0/src/agent_backbone/services/jobs/retry.py +173 -0
  115. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/__init__.py +42 -0
  116. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_create_notify.py +63 -0
  117. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_dedup.py +32 -0
  118. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_delivery.py +287 -0
  119. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_dependencies.py +98 -0
  120. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_format.py +157 -0
  121. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_ingest.py +138 -0
  122. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_intelligence.py +126 -0
  123. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_lifecycle.py +158 -0
  124. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_priority.py +33 -0
  125. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_resolution.py +39 -0
  126. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_router.py +234 -0
  127. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/_targets.py +130 -0
  128. agent_backbone-2.0.0a0/src/agent_backbone/services/routing/models.py +50 -0
  129. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/__init__.py +132 -0
  130. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/_pane.py +128 -0
  131. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/aider.py +24 -0
  132. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/base.py +396 -0
  133. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/claude.py +117 -0
  134. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/codex.py +103 -0
  135. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/deepcode.py +78 -0
  136. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/gemini.py +55 -0
  137. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/opencode.py +40 -0
  138. agent_backbone-2.0.0a0/src/agent_backbone/services/runtimes/shell.py +30 -0
  139. agent_backbone-2.0.0a0/src/agent_backbone/services/scheduler.py +135 -0
  140. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/__init__.py +27 -0
  141. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/_roster.py +86 -0
  142. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/_templates.py +28 -0
  143. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/_worktree.py +81 -0
  144. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/interface.py +350 -0
  145. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/coder.md +16 -0
  146. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/common.md +42 -0
  147. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/coordinator.md +45 -0
  148. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/reviewer.md +19 -0
  149. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/scout.md +17 -0
  150. agent_backbone-2.0.0a0/src/agent_backbone/services/swarm/templates/worker.md +12 -0
  151. agent_backbone-2.0.0a0/src/agent_backbone/services/terminal/__init__.py +49 -0
  152. agent_backbone-2.0.0a0/src/agent_backbone/services/terminal/_copy_mode.py +42 -0
  153. agent_backbone-2.0.0a0/src/agent_backbone/services/terminal/_core.py +205 -0
  154. agent_backbone-2.0.0a0/src/agent_backbone/services/terminal/_pty.py +337 -0
  155. agent_backbone-2.0.0a0/src/agent_backbone/services/terminal/_sessions.py +212 -0
  156. agent_backbone-2.0.0a0/src/agent_backbone/templates.py +28 -0
@@ -0,0 +1,27 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .venv/
8
+ .pytest_cache/
9
+ .ruff_cache/
10
+ .coverage
11
+ coverage_html/
12
+
13
+ # Local secrets and data
14
+ .env
15
+ *.pem
16
+
17
+ # Local data (SQLite db, state files, pids)
18
+ *.db
19
+ *.db-journal
20
+
21
+ # Editors / OS
22
+ .idea/
23
+ .vscode/
24
+ .DS_Store
25
+
26
+ # Test fixture key is intentionally committed
27
+ !tests/fixtures/*.pem
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 agent-backbone contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,183 @@
1
+ Metadata-Version: 2.5
2
+ Name: agent-backbone
3
+ Version: 2.0.0a0
4
+ Summary: Local control plane for terminal AI agents: run them, message them, coordinate them through GitHub Issues, reach them from Telegram.
5
+ Project-URL: Homepage, https://github.com/eandualem/agent-backbone
6
+ Project-URL: Documentation, https://github.com/eandualem/agent-backbone/blob/main/docs/README.md
7
+ Project-URL: Source, https://github.com/eandualem/agent-backbone
8
+ Project-URL: Issues, https://github.com/eandualem/agent-backbone/issues
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: agents,claude-code,codex,github,orchestration,telegram,tmux
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: aiosqlite>=0.20
25
+ Requires-Dist: alembic>=1.13
26
+ Requires-Dist: fastapi>=0.115
27
+ Requires-Dist: httpx>=0.27
28
+ Requires-Dist: pydantic>=2.0
29
+ Requires-Dist: python-dotenv>=1.0
30
+ Requires-Dist: python-socketio>=5.11
31
+ Requires-Dist: python-telegram-bot>=21.0
32
+ Requires-Dist: sqlalchemy[asyncio]>=2.0
33
+ Requires-Dist: uvicorn[standard]>=0.32
34
+ Provides-Extra: github-app
35
+ Requires-Dist: cryptography>=44.0; extra == 'github-app'
36
+ Provides-Extra: postgres
37
+ Requires-Dist: asyncpg>=0.29; extra == 'postgres'
38
+ Description-Content-Type: text/markdown
39
+
40
+ # agent-backbone
41
+
42
+ A lightweight control plane for the terminal coding agents you already use.
43
+
44
+ agent-backbone runs Claude Code, Codex, OpenCode, Deep Code and other command-line agents as persistent sessions on your machine, and gives them what a single terminal cannot: a way to communicate with each other, a manager that knows what each of them is doing, a channel for delegating work, and a way to form teams around a task. The agents stay the tools you already run, with their own logins, configuration and model access. The backbone adds no model, no subscription and no files to your repositories.
45
+
46
+ **What it enables**
47
+
48
+ - **Communication.** Any agent can message any other — across CLIs, models and repositories — with a single command. A message is delivered only when the recipient is ready to receive it and stored until then, so an agent in the middle of a task is never interrupted by another.
49
+ - **Management.** The backbone knows whether each agent is idle, working or waiting for a person, and shows the evidence behind that reading. Start, stop, inspect and attach to any agent from one place; hear about the ones that need you on Telegram.
50
+ - **Delegation.** GitHub Issues are the task list. An issue opened in an agent's repository is that agent's work; a `for:<agent>` label routes an issue to a specific agent; comments return to whoever opened it; closing an issue hands the agent its next one. An orchestrator is simply an agent that watches several repositories.
51
+ - **Teams.** When a task benefits from parallel work, an agent creates a swarm: a coordinator plus members on the runtimes and models it chooses, sharing one worktree and branch, finishing in a pull request. When the issue closes, the swarm is torn down and the branch remains.
52
+
53
+ Every agent the backbone starts is told at launch who it is and how to use all of this, so agents can start other agents, subscribe to repositories, message each other and form teams without a person in the loop. You can watch any session at any time, or step in.
54
+
55
+ > **Status:** pre-release. The core — state detection, safe delivery, GitHub routing, swarms, Telegram, the API — is tested and has been exercised against live Claude Code, Codex, OpenCode and Deep Code sessions. [Status and roadmap](https://github.com/eandualem/agent-backbone/blob/main/docs/status-and-roadmap.md) records what is verified and what is not.
56
+
57
+ ## Install
58
+
59
+ Requirements: macOS or Linux, Python 3.11+, `tmux`, [uv](https://docs.astral.sh/uv/) (or pipx), and at least one agent CLI on your PATH.
60
+
61
+ ```bash
62
+ uv tool install "agent-backbone[github-app]" # https://pypi.org/project/agent-backbone/
63
+ backbone init # data directory, .env with an API key, database
64
+ backbone service install # runs now and at every login (launchd / systemd --user)
65
+ ```
66
+
67
+ `pipx install "agent-backbone[github-app]"` works the same. If `backbone` is not found afterwards, run `uv tool update-shell` once and open a new terminal. `ab` is the same command under a short name (on macOS `/usr/sbin/ab`, Apache Bench, may shadow it — put `~/.local/bin` first in your PATH or use `backbone`).
68
+
69
+ There is no configuration file, no database server and no tunnel. Everything the backbone knows lives in `~/.local/share/agent-backbone/` (a SQLite file, hook state, `.env`); settings are changed with `backbone config set`.
70
+
71
+ ### Setting up with an agent
72
+
73
+ The setup can be delegated to any agent that has a shell — a Claude Code, Codex or OpenCode session in one of your repositories:
74
+
75
+ > Install agent-backbone from PyPI (`uv tool install "agent-backbone[github-app]"`), then run `backbone help setup` and follow it: get the backbone running, start an agent in this repository, and tell me what still needs me.
76
+
77
+ Everything the agent needs ships with the package: `backbone help` (the playbooks — `setup`, `agents`, `messaging`, `github`, `swarms`) and `backbone docs` (this documentation, page by page).
78
+
79
+ ## First run
80
+
81
+ An agent is started from the directory of the repository it will work in. The agent takes the directory's name, and that repository becomes its responsibility.
82
+
83
+ ```bash
84
+ cd ~/code/app
85
+ backbone agent start # → app: ready — claude repo acme/app
86
+ backbone tell app "Read every file under src/ and list the modules."
87
+ backbone tell app "…and then tell me which one is the largest." # while it is still working
88
+ ```
89
+
90
+ The second `tell` returns `"outcome": "agent_working"`: the message was not typed into a working terminal. `backbone agent inspect app` shows the agent's state, the evidence for it, and the message waiting. When the agent reaches its prompt, the message is delivered. [Getting started](https://github.com/eandualem/agent-backbone/blob/main/docs/getting-started.md) continues from here with a second agent, GitHub and an orchestrator.
91
+
92
+ ## How it works
93
+
94
+ - **Agents are discovered, not declared.** `backbone agent start` in a directory records the agent: its name, its runtime and model, and the repository read from `git remote origin`. The command returns when the agent is at its prompt; folder-trust dialogs are answered for you.
95
+ - **State comes from the runtime first, the terminal second.** Claude Code reports its state through hooks the backbone installs for the session; every other runtime is read from its terminal. Every reading carries its evidence, visible in `backbone agent inspect`.
96
+ - **Delivery is gated on state.** Text is pasted into an agent only when it is idle — not while it is working, waiting for a person, or while you are typing in that terminal. What cannot land now is queued in SQLite and delivered when the agent is free. The few deliberate exceptions are documented in [How it works](https://github.com/eandualem/agent-backbone/blob/main/docs/how-it-works.md).
97
+ - **Agents can unblock each other.** `backbone agent approve <name>` answers a runtime's permission dialog — only while it is on screen, only with its affirmative key, every approval audited — so a coordinator can keep a team moving without a person watching.
98
+ - **Coordination goes through GitHub, per repository.** Nothing is configured per repository: GitHub credentials are set once, and every repository an agent owns or watches is tracked on its own, by polling or by webhook.
99
+ - **You reach it from anywhere.** The CLI, Telegram (a forum topic per agent), and a REST + Socket.IO API for your own dashboard or automation. The backbone ships no UI.
100
+
101
+ ## Runtimes
102
+
103
+ Any CLI that runs in a terminal can be an agent; how much the backbone can do for it depends on the runtime:
104
+
105
+ | Runtime | Unattended start | Brief at launch | State detection | Delivery | Approve |
106
+ |---|---|---|---|---|---|
107
+ | `claude` (Claude Code) | ✅ | ✅ system prompt | ✅ hooks + terminal | ✅ verified | ✅ |
108
+ | `codex` | ✅ | ✅ first prompt | ✅ terminal | ✅ verified | ✅ |
109
+ | `opencode` | ✅ (no trust dialog) | ✅ first prompt | ✅ terminal | ✅ verified | ✅ |
110
+ | `deepcode` (Deep Code, DeepSeek) | ✅ (no trust dialog) | ✅ `-p` | ✅ terminal | ✅ verified | pending |
111
+ | `gemini` | ✅ `--skip-trust` | ✅ first prompt | ✅ terminal | unverified¹ | — |
112
+ | `aider`, `shell` | — | first message | terminal, best effort | untested | — |
113
+
114
+ ¹ Gemini CLI 0.46 completes Google OAuth and then refuses personal accounts ("no longer supported for Gemini Code Assist for individuals"); the backbone reports such a session as `waiting_for_human`. Delivery to a signed-in Gemini session (e.g. `GEMINI_API_KEY`) has not been tested yet. Deep Code is `@vegamo/deepcode-cli`, the community CLI DeepSeek's docs point to; its permission dialog has not been captured yet, so `agent approve` refuses it until then.
115
+
116
+ `backbone runtimes` lists every runtime, whether its binary is installed, and example model ids. The backbone does not manage per-repository runtime configuration (`CLAUDE.md`, `AGENTS.md`, MCP servers, …) — how a repository configures its tools is the repository's business.
117
+
118
+ ## Beyond the first run
119
+
120
+ **GitHub in two commands.** Issues become the agents' task list in every repository they own or watch:
121
+
122
+ ```bash
123
+ gh auth token | backbone secrets set GITHUB_TOKEN # the backbone's own .env, never a repo's
124
+ backbone service install # restart to pick it up
125
+ ```
126
+
127
+ That is poll intake (every 60 s, nothing exposed). For instant delivery and automatic coverage of every repository you create, do the one-time GitHub App + webhook setup: [GitHub App setup](https://github.com/eandualem/agent-backbone/blob/main/docs/github-app-setup.md).
128
+
129
+ **An orchestrator** watches the repositories it coordinates — `backbone agent start --watch acme/app --watch acme/web` — and opens issues for the others with `for:` and `from:` labels. **A swarm** puts parallel workers on one issue ([Swarms](https://github.com/eandualem/agent-backbone/blob/main/docs/swarms.md)). **Telegram** gives every agent a topic you can talk to from your phone ([Telegram](https://github.com/eandualem/agent-backbone/blob/main/docs/telegram.md)). **Your own view** builds on the [API](https://github.com/eandualem/agent-backbone/blob/main/docs/api.md).
130
+
131
+ ## How it relates to other tools
132
+
133
+ Session managers such as [claude-squad](https://github.com/smtg-ai/claude-squad), [agent-manager](https://github.com/YoanWai/agent-manager) and [vibe-kanban](https://github.com/BloopAI/vibe-kanban) give you one screen over many agent sessions, with worktrees and diff review; they are about the person operating the agents. agent-backbone is about what happens between the agents: addressing a live agent from outside its terminal, delivering only when it is safe, routing work through issues, and letting agents manage each other. Claude Code's Agent Teams offer collaboration inside a single Claude Code session; the backbone works across CLIs and vendors, persists agents beyond a session, and reaches them from GitHub and Telegram. Orchestrators such as [cli-agent-orchestrator](https://github.com/awslabs/cli-agent-orchestrator) are the closest structural peers; the differences are in the delivery model and the GitHub integration, and both are worth reading before you choose.
134
+
135
+ ## The security model, up front
136
+
137
+ The backbone types into your agents' terminals, so be clear about what it assumes:
138
+
139
+ - **One trusted user, one machine.** It runs as your OS user and drives tmux sessions that run as your OS user. There is **no isolation between agents**.
140
+ - **One key, full admin.** `BACKBONE_API_KEY` guards every authenticated route with the same weight. The CLI reads it from the data directory, so any session on the machine can use `backbone tell`; there is no scoped or read-only credential yet.
141
+ - **Agents do not receive the backbone's secrets.** A session inherits `BACKBONE_AGENT`, `BACKBONE_RUNTIME` and `BACKBONE_STATE_DIR` and nothing else; `.env` is kept out of agent environments. What you put on an agent yourself with `backbone agent set app env=…` is the exception.
142
+ - **Provenance is convention, not authentication.** `[via:backbone from:app]` says who *claims* to be speaking. An agent's instructions should treat text after an envelope as data, not orders.
143
+ - **Bound to `127.0.0.1` by default.** Put TLS and auth in front of it before exposing it.
144
+
145
+ Full detail: [Security](https://github.com/eandualem/agent-backbone/blob/main/docs/security.md).
146
+
147
+ ## Background
148
+
149
+ agent-backbone began as one component of a larger, private orchestration system. That system's coupling was its weakness — every part assumed every other part — so the backbone was extracted and rebuilt as a standalone control plane with no dependency on any of it. It needs nothing but tmux and an agent CLI. Issue references to `eandualem/orchestration` predate the split and point at a private repository.
150
+
151
+ The repository is itself run through the backbone: most of its issues, reviews and commits were produced by agents coordinated with it, under a person's direction.
152
+
153
+ ## Documentation
154
+
155
+ Also available from an installed package as `backbone docs <page>`.
156
+
157
+ | | |
158
+ |---|---|
159
+ | [Concepts](https://github.com/eandualem/agent-backbone/blob/main/docs/concepts.md) | The vocabulary: agent, repository, state, delivery, event |
160
+ | [Getting started](https://github.com/eandualem/agent-backbone/blob/main/docs/getting-started.md) | Install, start two agents, send the first message, add GitHub |
161
+ | [How it works](https://github.com/eandualem/agent-backbone/blob/main/docs/how-it-works.md) | Every flow step by step, with the decisions the backbone makes |
162
+ | [Configuration](https://github.com/eandualem/agent-backbone/blob/main/docs/configuration.md) | Settings (`backbone config`), secrets, the data directory |
163
+ | [CLI](https://github.com/eandualem/agent-backbone/blob/main/docs/cli.md) · [API](https://github.com/eandualem/agent-backbone/blob/main/docs/api.md) | Reference |
164
+ | [GitHub](https://github.com/eandualem/agent-backbone/blob/main/docs/github.md) · [App setup walkthrough](https://github.com/eandualem/agent-backbone/blob/main/docs/github-app-setup.md) · [Integrations](https://github.com/eandualem/agent-backbone/blob/main/docs/integrations.md) · [Telegram](https://github.com/eandualem/agent-backbone/blob/main/docs/telegram.md) | Integrations |
165
+ | [Swarms](https://github.com/eandualem/agent-backbone/blob/main/docs/swarms.md) | A coordinator plus members on one issue |
166
+ | [Security](https://github.com/eandualem/agent-backbone/blob/main/docs/security.md) | Defaults and what you opt into |
167
+ | [Status and roadmap](https://github.com/eandualem/agent-backbone/blob/main/docs/status-and-roadmap.md) | What works, what is missing, what is next |
168
+
169
+ ## Development
170
+
171
+ ```bash
172
+ git clone https://github.com/eandualem/agent-backbone && cd agent-backbone
173
+ make install # uv sync --all-extras
174
+ make test # pytest — SQLite in memory, no services required
175
+ make check # lint + format check + tests
176
+ make dev # backbone up --reload
177
+ ```
178
+
179
+ `uv tool install --editable ".[github-app]"` gives you a global CLI that follows your checkout. See [CONTRIBUTING.md](https://github.com/eandualem/agent-backbone/blob/main/CONTRIBUTING.md).
180
+
181
+ ## License
182
+
183
+ MIT — see [LICENSE](https://github.com/eandualem/agent-backbone/blob/main/LICENSE).
@@ -0,0 +1,144 @@
1
+ # agent-backbone
2
+
3
+ A lightweight control plane for the terminal coding agents you already use.
4
+
5
+ agent-backbone runs Claude Code, Codex, OpenCode, Deep Code and other command-line agents as persistent sessions on your machine, and gives them what a single terminal cannot: a way to communicate with each other, a manager that knows what each of them is doing, a channel for delegating work, and a way to form teams around a task. The agents stay the tools you already run, with their own logins, configuration and model access. The backbone adds no model, no subscription and no files to your repositories.
6
+
7
+ **What it enables**
8
+
9
+ - **Communication.** Any agent can message any other — across CLIs, models and repositories — with a single command. A message is delivered only when the recipient is ready to receive it and stored until then, so an agent in the middle of a task is never interrupted by another.
10
+ - **Management.** The backbone knows whether each agent is idle, working or waiting for a person, and shows the evidence behind that reading. Start, stop, inspect and attach to any agent from one place; hear about the ones that need you on Telegram.
11
+ - **Delegation.** GitHub Issues are the task list. An issue opened in an agent's repository is that agent's work; a `for:<agent>` label routes an issue to a specific agent; comments return to whoever opened it; closing an issue hands the agent its next one. An orchestrator is simply an agent that watches several repositories.
12
+ - **Teams.** When a task benefits from parallel work, an agent creates a swarm: a coordinator plus members on the runtimes and models it chooses, sharing one worktree and branch, finishing in a pull request. When the issue closes, the swarm is torn down and the branch remains.
13
+
14
+ Every agent the backbone starts is told at launch who it is and how to use all of this, so agents can start other agents, subscribe to repositories, message each other and form teams without a person in the loop. You can watch any session at any time, or step in.
15
+
16
+ > **Status:** pre-release. The core — state detection, safe delivery, GitHub routing, swarms, Telegram, the API — is tested and has been exercised against live Claude Code, Codex, OpenCode and Deep Code sessions. [Status and roadmap](https://github.com/eandualem/agent-backbone/blob/main/docs/status-and-roadmap.md) records what is verified and what is not.
17
+
18
+ ## Install
19
+
20
+ Requirements: macOS or Linux, Python 3.11+, `tmux`, [uv](https://docs.astral.sh/uv/) (or pipx), and at least one agent CLI on your PATH.
21
+
22
+ ```bash
23
+ uv tool install "agent-backbone[github-app]" # https://pypi.org/project/agent-backbone/
24
+ backbone init # data directory, .env with an API key, database
25
+ backbone service install # runs now and at every login (launchd / systemd --user)
26
+ ```
27
+
28
+ `pipx install "agent-backbone[github-app]"` works the same. If `backbone` is not found afterwards, run `uv tool update-shell` once and open a new terminal. `ab` is the same command under a short name (on macOS `/usr/sbin/ab`, Apache Bench, may shadow it — put `~/.local/bin` first in your PATH or use `backbone`).
29
+
30
+ There is no configuration file, no database server and no tunnel. Everything the backbone knows lives in `~/.local/share/agent-backbone/` (a SQLite file, hook state, `.env`); settings are changed with `backbone config set`.
31
+
32
+ ### Setting up with an agent
33
+
34
+ The setup can be delegated to any agent that has a shell — a Claude Code, Codex or OpenCode session in one of your repositories:
35
+
36
+ > Install agent-backbone from PyPI (`uv tool install "agent-backbone[github-app]"`), then run `backbone help setup` and follow it: get the backbone running, start an agent in this repository, and tell me what still needs me.
37
+
38
+ Everything the agent needs ships with the package: `backbone help` (the playbooks — `setup`, `agents`, `messaging`, `github`, `swarms`) and `backbone docs` (this documentation, page by page).
39
+
40
+ ## First run
41
+
42
+ An agent is started from the directory of the repository it will work in. The agent takes the directory's name, and that repository becomes its responsibility.
43
+
44
+ ```bash
45
+ cd ~/code/app
46
+ backbone agent start # → app: ready — claude repo acme/app
47
+ backbone tell app "Read every file under src/ and list the modules."
48
+ backbone tell app "…and then tell me which one is the largest." # while it is still working
49
+ ```
50
+
51
+ The second `tell` returns `"outcome": "agent_working"`: the message was not typed into a working terminal. `backbone agent inspect app` shows the agent's state, the evidence for it, and the message waiting. When the agent reaches its prompt, the message is delivered. [Getting started](https://github.com/eandualem/agent-backbone/blob/main/docs/getting-started.md) continues from here with a second agent, GitHub and an orchestrator.
52
+
53
+ ## How it works
54
+
55
+ - **Agents are discovered, not declared.** `backbone agent start` in a directory records the agent: its name, its runtime and model, and the repository read from `git remote origin`. The command returns when the agent is at its prompt; folder-trust dialogs are answered for you.
56
+ - **State comes from the runtime first, the terminal second.** Claude Code reports its state through hooks the backbone installs for the session; every other runtime is read from its terminal. Every reading carries its evidence, visible in `backbone agent inspect`.
57
+ - **Delivery is gated on state.** Text is pasted into an agent only when it is idle — not while it is working, waiting for a person, or while you are typing in that terminal. What cannot land now is queued in SQLite and delivered when the agent is free. The few deliberate exceptions are documented in [How it works](https://github.com/eandualem/agent-backbone/blob/main/docs/how-it-works.md).
58
+ - **Agents can unblock each other.** `backbone agent approve <name>` answers a runtime's permission dialog — only while it is on screen, only with its affirmative key, every approval audited — so a coordinator can keep a team moving without a person watching.
59
+ - **Coordination goes through GitHub, per repository.** Nothing is configured per repository: GitHub credentials are set once, and every repository an agent owns or watches is tracked on its own, by polling or by webhook.
60
+ - **You reach it from anywhere.** The CLI, Telegram (a forum topic per agent), and a REST + Socket.IO API for your own dashboard or automation. The backbone ships no UI.
61
+
62
+ ## Runtimes
63
+
64
+ Any CLI that runs in a terminal can be an agent; how much the backbone can do for it depends on the runtime:
65
+
66
+ | Runtime | Unattended start | Brief at launch | State detection | Delivery | Approve |
67
+ |---|---|---|---|---|---|
68
+ | `claude` (Claude Code) | ✅ | ✅ system prompt | ✅ hooks + terminal | ✅ verified | ✅ |
69
+ | `codex` | ✅ | ✅ first prompt | ✅ terminal | ✅ verified | ✅ |
70
+ | `opencode` | ✅ (no trust dialog) | ✅ first prompt | ✅ terminal | ✅ verified | ✅ |
71
+ | `deepcode` (Deep Code, DeepSeek) | ✅ (no trust dialog) | ✅ `-p` | ✅ terminal | ✅ verified | pending |
72
+ | `gemini` | ✅ `--skip-trust` | ✅ first prompt | ✅ terminal | unverified¹ | — |
73
+ | `aider`, `shell` | — | first message | terminal, best effort | untested | — |
74
+
75
+ ¹ Gemini CLI 0.46 completes Google OAuth and then refuses personal accounts ("no longer supported for Gemini Code Assist for individuals"); the backbone reports such a session as `waiting_for_human`. Delivery to a signed-in Gemini session (e.g. `GEMINI_API_KEY`) has not been tested yet. Deep Code is `@vegamo/deepcode-cli`, the community CLI DeepSeek's docs point to; its permission dialog has not been captured yet, so `agent approve` refuses it until then.
76
+
77
+ `backbone runtimes` lists every runtime, whether its binary is installed, and example model ids. The backbone does not manage per-repository runtime configuration (`CLAUDE.md`, `AGENTS.md`, MCP servers, …) — how a repository configures its tools is the repository's business.
78
+
79
+ ## Beyond the first run
80
+
81
+ **GitHub in two commands.** Issues become the agents' task list in every repository they own or watch:
82
+
83
+ ```bash
84
+ gh auth token | backbone secrets set GITHUB_TOKEN # the backbone's own .env, never a repo's
85
+ backbone service install # restart to pick it up
86
+ ```
87
+
88
+ That is poll intake (every 60 s, nothing exposed). For instant delivery and automatic coverage of every repository you create, do the one-time GitHub App + webhook setup: [GitHub App setup](https://github.com/eandualem/agent-backbone/blob/main/docs/github-app-setup.md).
89
+
90
+ **An orchestrator** watches the repositories it coordinates — `backbone agent start --watch acme/app --watch acme/web` — and opens issues for the others with `for:` and `from:` labels. **A swarm** puts parallel workers on one issue ([Swarms](https://github.com/eandualem/agent-backbone/blob/main/docs/swarms.md)). **Telegram** gives every agent a topic you can talk to from your phone ([Telegram](https://github.com/eandualem/agent-backbone/blob/main/docs/telegram.md)). **Your own view** builds on the [API](https://github.com/eandualem/agent-backbone/blob/main/docs/api.md).
91
+
92
+ ## How it relates to other tools
93
+
94
+ Session managers such as [claude-squad](https://github.com/smtg-ai/claude-squad), [agent-manager](https://github.com/YoanWai/agent-manager) and [vibe-kanban](https://github.com/BloopAI/vibe-kanban) give you one screen over many agent sessions, with worktrees and diff review; they are about the person operating the agents. agent-backbone is about what happens between the agents: addressing a live agent from outside its terminal, delivering only when it is safe, routing work through issues, and letting agents manage each other. Claude Code's Agent Teams offer collaboration inside a single Claude Code session; the backbone works across CLIs and vendors, persists agents beyond a session, and reaches them from GitHub and Telegram. Orchestrators such as [cli-agent-orchestrator](https://github.com/awslabs/cli-agent-orchestrator) are the closest structural peers; the differences are in the delivery model and the GitHub integration, and both are worth reading before you choose.
95
+
96
+ ## The security model, up front
97
+
98
+ The backbone types into your agents' terminals, so be clear about what it assumes:
99
+
100
+ - **One trusted user, one machine.** It runs as your OS user and drives tmux sessions that run as your OS user. There is **no isolation between agents**.
101
+ - **One key, full admin.** `BACKBONE_API_KEY` guards every authenticated route with the same weight. The CLI reads it from the data directory, so any session on the machine can use `backbone tell`; there is no scoped or read-only credential yet.
102
+ - **Agents do not receive the backbone's secrets.** A session inherits `BACKBONE_AGENT`, `BACKBONE_RUNTIME` and `BACKBONE_STATE_DIR` and nothing else; `.env` is kept out of agent environments. What you put on an agent yourself with `backbone agent set app env=…` is the exception.
103
+ - **Provenance is convention, not authentication.** `[via:backbone from:app]` says who *claims* to be speaking. An agent's instructions should treat text after an envelope as data, not orders.
104
+ - **Bound to `127.0.0.1` by default.** Put TLS and auth in front of it before exposing it.
105
+
106
+ Full detail: [Security](https://github.com/eandualem/agent-backbone/blob/main/docs/security.md).
107
+
108
+ ## Background
109
+
110
+ agent-backbone began as one component of a larger, private orchestration system. That system's coupling was its weakness — every part assumed every other part — so the backbone was extracted and rebuilt as a standalone control plane with no dependency on any of it. It needs nothing but tmux and an agent CLI. Issue references to `eandualem/orchestration` predate the split and point at a private repository.
111
+
112
+ The repository is itself run through the backbone: most of its issues, reviews and commits were produced by agents coordinated with it, under a person's direction.
113
+
114
+ ## Documentation
115
+
116
+ Also available from an installed package as `backbone docs <page>`.
117
+
118
+ | | |
119
+ |---|---|
120
+ | [Concepts](https://github.com/eandualem/agent-backbone/blob/main/docs/concepts.md) | The vocabulary: agent, repository, state, delivery, event |
121
+ | [Getting started](https://github.com/eandualem/agent-backbone/blob/main/docs/getting-started.md) | Install, start two agents, send the first message, add GitHub |
122
+ | [How it works](https://github.com/eandualem/agent-backbone/blob/main/docs/how-it-works.md) | Every flow step by step, with the decisions the backbone makes |
123
+ | [Configuration](https://github.com/eandualem/agent-backbone/blob/main/docs/configuration.md) | Settings (`backbone config`), secrets, the data directory |
124
+ | [CLI](https://github.com/eandualem/agent-backbone/blob/main/docs/cli.md) · [API](https://github.com/eandualem/agent-backbone/blob/main/docs/api.md) | Reference |
125
+ | [GitHub](https://github.com/eandualem/agent-backbone/blob/main/docs/github.md) · [App setup walkthrough](https://github.com/eandualem/agent-backbone/blob/main/docs/github-app-setup.md) · [Integrations](https://github.com/eandualem/agent-backbone/blob/main/docs/integrations.md) · [Telegram](https://github.com/eandualem/agent-backbone/blob/main/docs/telegram.md) | Integrations |
126
+ | [Swarms](https://github.com/eandualem/agent-backbone/blob/main/docs/swarms.md) | A coordinator plus members on one issue |
127
+ | [Security](https://github.com/eandualem/agent-backbone/blob/main/docs/security.md) | Defaults and what you opt into |
128
+ | [Status and roadmap](https://github.com/eandualem/agent-backbone/blob/main/docs/status-and-roadmap.md) | What works, what is missing, what is next |
129
+
130
+ ## Development
131
+
132
+ ```bash
133
+ git clone https://github.com/eandualem/agent-backbone && cd agent-backbone
134
+ make install # uv sync --all-extras
135
+ make test # pytest — SQLite in memory, no services required
136
+ make check # lint + format check + tests
137
+ make dev # backbone up --reload
138
+ ```
139
+
140
+ `uv tool install --editable ".[github-app]"` gives you a global CLI that follows your checkout. See [CONTRIBUTING.md](https://github.com/eandualem/agent-backbone/blob/main/CONTRIBUTING.md).
141
+
142
+ ## License
143
+
144
+ MIT — see [LICENSE](https://github.com/eandualem/agent-backbone/blob/main/LICENSE).
@@ -0,0 +1,43 @@
1
+ [alembic]
2
+ script_location = %(here)s/src/agent_backbone/services/database/migrations
3
+ file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(rev)s_%%(slug)s
4
+
5
+ [post_write_hooks]
6
+ hooks = ruff_format
7
+ ruff_format.type = exec
8
+ ruff_format.executable = uv
9
+ ruff_format.options = run ruff format REVISION_SCRIPT_FILENAME
10
+
11
+ [loggers]
12
+ keys = root,sqlalchemy,alembic
13
+
14
+ [handlers]
15
+ keys = console
16
+
17
+ [formatters]
18
+ keys = generic
19
+
20
+ [logger_root]
21
+ level = WARN
22
+ handlers = console
23
+ qualname =
24
+
25
+ [logger_sqlalchemy]
26
+ level = WARN
27
+ handlers =
28
+ qualname = sqlalchemy.engine
29
+
30
+ [logger_alembic]
31
+ level = INFO
32
+ handlers =
33
+ qualname = alembic
34
+
35
+ [handler_console]
36
+ class = StreamHandler
37
+ args = (sys.stderr,)
38
+ level = NOTSET
39
+ formatter = generic
40
+
41
+ [formatter_generic]
42
+ format = %(levelname)-5.5s [%(name)s] %(message)s
43
+ datefmt = %H:%M:%S
@@ -0,0 +1,28 @@
1
+ # agent-backbone documentation
2
+
3
+ Start with **Concepts** for the mental model, then **Getting started** to run
4
+ it, then **How it works** for the end-to-end flows. Everything else is
5
+ reference. These pages ship inside the package: `backbone docs <page>`
6
+ prints any of them from an installed backbone, and `backbone help <topic>`
7
+ prints the shorter playbooks written for agents (`setup`, `agents`,
8
+ `messaging`, `github`, `swarms`).
9
+
10
+ | Read this | When you want to |
11
+ |---|---|
12
+ | [Concepts](concepts.md) | Understand the handful of words the whole system is built from |
13
+ | [Getting started](getting-started.md) | Install, start two agents from their directories, send the first message, add GitHub |
14
+ | [How it works](how-it-works.md) | Follow a start, a message, an issue and a Telegram command through the system |
15
+ | [Configuration](configuration.md) | Every setting (`backbone config`), every secret, the data directory |
16
+ | [CLI](cli.md) | `backbone init / doctor / up / status / config / agent / swarm / tell / hooks / help / docs` |
17
+ | [Swarms](swarms.md) | A coordinator plus members on one worktree, one branch, one issue, one PR |
18
+ | [HTTP & Socket.IO API](api.md) | Build a dashboard or script against the backbone |
19
+ | [GitHub integration](github.md) | Repositories, labels, routing rules, intake modes, what an agent is expected to do |
20
+ | [GitHub App setup](github-app-setup.md) | The step-by-step production setup: App + webhook via Cloudflare Tunnel or ngrok, with checkpoints |
21
+ | [Integrations](integrations.md) | The contract every human-facing channel implements, and how to add one |
22
+ | [Telegram](telegram.md) | Bot setup, allowlist, forum topics, commands |
23
+ | [Security](security.md) | What is protected by default and what you opt into |
24
+ | [Status and roadmap](status-and-roadmap.md) | What works today, what is deliberately missing, what is next |
25
+
26
+ Conventions: `reviewer`, `builder`, `orch` are example agent names; `acme/app`
27
+ and `acme/web` are example repositories; `<data_dir>` is
28
+ `~/.local/share/agent-backbone` unless you changed it.