agentirc-cli 0.15.2__tar.gz → 0.16.1__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.
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.pr_agent.toml +1 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/CHANGELOG.md +22 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/CLAUDE.md +1 -1
- agentirc_cli-0.16.1/PKG-INFO +193 -0
- agentirc_cli-0.16.1/README.md +171 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/cli.py +66 -38
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/agent_runner.py +31 -18
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/config.py +4 -2
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/daemon.py +43 -30
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/irc_transport.py +1 -1
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/skill/SKILL.md +9 -9
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/skill/irc_client.py +5 -5
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/socket_server.py +1 -1
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/acp}/webhook.py +1 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/config.py +5 -1
- agentirc_cli-0.16.1/agentirc/clients/claude/supervisor.py +141 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/config.py +3 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/config.py +3 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/learn_prompt.py +5 -2
- agentirc_cli-0.16.1/docs/agent-client.md +28 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/agent-harness-spec.md +7 -6
- agentirc_cli-0.16.1/docs/clients/acp/overview.md +140 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/getting-started.md +1 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/grow-your-agent.md +5 -5
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/harness-conformance.md +1 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/layer5-agent-harness.md +1 -1
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/10-grow-your-agent.md +1 -1
- agentirc_cli-0.16.1/index.md +78 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/pyproject.toml +3 -3
- agentirc_cli-0.15.2/tests/test_opencode_daemon.py → agentirc_cli-0.16.1/tests/test_acp_daemon.py +26 -24
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/uv.lock +1 -1
- agentirc_cli-0.15.2/PKG-INFO +0 -224
- agentirc_cli-0.15.2/README.md +0 -202
- agentirc_cli-0.15.2/agentirc/clients/opencode/supervisor.py +0 -163
- agentirc_cli-0.15.2/docs/agent-client.md +0 -11
- agentirc_cli-0.15.2/docs/clients/opencode/configuration.md +0 -187
- agentirc_cli-0.15.2/docs/clients/opencode/context-management.md +0 -73
- agentirc_cli-0.15.2/docs/clients/opencode/irc-tools.md +0 -186
- agentirc_cli-0.15.2/docs/clients/opencode/overview.md +0 -125
- agentirc_cli-0.15.2/docs/clients/opencode/setup.md +0 -214
- agentirc_cli-0.15.2/docs/clients/opencode/supervisor.md +0 -126
- agentirc_cli-0.15.2/docs/clients/opencode/webhooks.md +0 -91
- agentirc_cli-0.15.2/docs/opencode-backend.md +0 -6
- agentirc_cli-0.15.2/index.md +0 -107
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.claude/skills/pr-review/SKILL.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.github/workflows/pages.yml +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.github/workflows/publish.yml +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.github/workflows/tests.yml +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.gitignore +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/.markdownlint-cli2.yaml +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/CNAME +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/Gemfile +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/Gemfile.lock +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/LICENSE +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/_config.yml +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/_sass/color_schemes/anthropic.scss +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/_sass/custom/custom.scss +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/__main__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/__init__.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/claude → agentirc_cli-0.16.1/agentirc/clients/acp}/__init__.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/claude → agentirc_cli-0.16.1/agentirc/clients/acp}/ipc.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/claude → agentirc_cli-0.16.1/agentirc/clients/acp}/message_buffer.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/claude → agentirc_cli-0.16.1/agentirc/clients/acp}/skill/__init__.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/claude → agentirc_cli-0.16.1/agentirc/clients/acp}/supervisor.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/codex → agentirc_cli-0.16.1/agentirc/clients/claude}/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/__main__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/agent_runner.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/daemon.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/codex → agentirc_cli-0.16.1/agentirc/clients/claude}/ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/irc_transport.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/codex → agentirc_cli-0.16.1/agentirc/clients/claude}/message_buffer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/skill/SKILL.md +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/codex → agentirc_cli-0.16.1/agentirc/clients/claude}/skill/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/skill/irc_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/socket_server.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/claude/webhook.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/copilot → agentirc_cli-0.16.1/agentirc/clients/codex}/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/agent_runner.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/daemon.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/copilot → agentirc_cli-0.16.1/agentirc/clients/codex}/ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/irc_transport.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/copilot → agentirc_cli-0.16.1/agentirc/clients/codex}/message_buffer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/skill/SKILL.md +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/copilot → agentirc_cli-0.16.1/agentirc/clients/codex}/skill/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/skill/irc_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/socket_server.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/supervisor.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/codex/webhook.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/copilot}/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/agent_runner.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/daemon.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/copilot}/ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/irc_transport.py +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/copilot}/message_buffer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/skill/SKILL.md +0 -0
- {agentirc_cli-0.15.2/agentirc/clients/opencode → agentirc_cli-0.16.1/agentirc/clients/copilot}/skill/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/skill/irc_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/socket_server.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/supervisor.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/clients/copilot/webhook.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/observer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/collector.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/model.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/renderer_text.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/renderer_web.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/overview/web/style.css +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/pidfile.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/commands.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/extensions/federation.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/extensions/history.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/extensions/rooms.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/extensions/tags.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/message.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/protocol-index.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/protocol/replies.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/__main__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/channel.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/config.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/ircd.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/remote_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/room_store.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/rooms_util.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/server_link.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/skill.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/skills/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/skills/history.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/agentirc/server/skills/rooms.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/ci.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/cli.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/configuration.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/context-management.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/irc-tools.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/overview.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/setup.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/supervisor.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/claude/webhooks.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/configuration.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/context-management.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/irc-tools.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/overview.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/setup.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/supervisor.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/codex/webhooks.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/configuration.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/context-management.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/irc-tools.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/overview.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/setup.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/supervisor.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/clients/copilot/webhooks.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/codex-backend.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/copilot-backend.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/design.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/docs-site.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/layer1-core-irc.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/layer2-attention.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/layer3-skills.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/layer4-federation.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/overview.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/publishing.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/resources/github-copilot-sdk-instructions.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/rooms.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/server-architecture.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/01-pair-programming.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/02-code-review-ensemble.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/03-cross-server-delegation.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/04-knowledge-propagation.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/05-the-observer.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/06-cross-server-ops.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/07-supervisor-intervention.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/08-apps-as-agents.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases/09-research-swarm.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/docs/use-cases-index.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/README.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/config.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/daemon.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/irc_transport.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/message_buffer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/skill/SKILL.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/skill/irc_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/socket_server.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/packages/agent-harness/webhook.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/plugins/claude-code/skills/irc/SKILL.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/plugins/codex/skills/agentirc-irc/SKILL.md +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/__init__.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/conftest.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_agent_runner.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_channel.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_codex_daemon.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_connection.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_copilot_daemon.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_daemon.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_daemon_config.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_daemon_ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_discovery.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_federation.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_history.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_integration_layer5.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_ipc.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_irc_transport.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_mentions.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_message.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_message_buffer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_messaging.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_modes.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_overview_cli.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_overview_collector.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_overview_model.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_overview_renderer.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_overview_web.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_room_persistence.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_rooms.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_rooms_federation.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_rooms_integration.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_skill_client.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_skills.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_socket_server.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_supervisor.py +0 -0
- {agentirc_cli-0.15.2 → agentirc_cli-0.16.1}/tests/test_webhook.py +0 -0
|
@@ -10,7 +10,7 @@ extra_instructions = """
|
|
|
10
10
|
|
|
11
11
|
## Harness Conformance (CRITICAL)
|
|
12
12
|
|
|
13
|
-
The authoritative spec is `docs/agent-harness-spec.md`. There are 4 agent backends under `agentirc/clients/` — claude, codex, copilot,
|
|
13
|
+
The authoritative spec is `docs/agent-harness-spec.md`. There are 4 agent backends under `agentirc/clients/` — claude, codex, copilot, acp — plus a reference implementation in `packages/agent-harness/`. The ACP backend supports any agent implementing the Agent Client Protocol (Cline, OpenCode, Kiro, etc.) via a configurable `acp_command`. The all-backends rule: a feature that exists in only one backend is a bug.
|
|
14
14
|
|
|
15
15
|
When reviewing changes to any file under `agentirc/clients/` or `packages/agent-harness/`, apply these checks:
|
|
16
16
|
|
|
@@ -4,6 +4,28 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [0.16.1] - 2026-03-31
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Revamped README, docs index, and pyproject.toml description with new landing page design
|
|
13
|
+
|
|
14
|
+
## [0.16.0] - 2026-03-31
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Generic ACP backend — supports Cline, OpenCode, Kiro, Gemini, and any ACP-compatible agent via configurable spawn command
|
|
20
|
+
- CLI --agent acp with --acp-command flag for registering ACP agents
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Replaced OpenCode-specific backend with generic ACP backend (clients/acp/)
|
|
26
|
+
- ACP supervisor uses SDK-based evaluation (vendor-agnostic) instead of opencode --non-interactive
|
|
27
|
+
- Backward compat: existing agent: opencode configs map to ACP backend automatically
|
|
28
|
+
|
|
7
29
|
## [0.15.2] - 2026-03-31
|
|
8
30
|
|
|
9
31
|
|
|
@@ -25,7 +25,7 @@ For agent backends (`clients/claude/`, `clients/codex/`, etc.):
|
|
|
25
25
|
|
|
26
26
|
If you improve a generic component (e.g., `irc_transport.py`), update the reference in `packages/` too so the next backend starts from the latest version.
|
|
27
27
|
|
|
28
|
-
**All-backends rule:** When adding or changing a feature in any agent harness (config fields, transport capabilities, daemon handlers), propagate the change to **all** backends (`claude`, `codex`, `copilot`, `
|
|
28
|
+
**All-backends rule:** When adding or changing a feature in any agent harness (config fields, transport capabilities, daemon handlers), propagate the change to **all** backends (`claude`, `codex`, `copilot`, `acp`) and update `docs/` accordingly. A feature that only exists in one backend is a bug.
|
|
29
29
|
|
|
30
30
|
## Documentation
|
|
31
31
|
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentirc-cli
|
|
3
|
+
Version: 0.16.1
|
|
4
|
+
Summary: 🌱 The space your agents deserve — an autonomous agent mesh where AI agents live, collaborate, and grow
|
|
5
|
+
Project-URL: Homepage, https://github.com/OriNachum/agentirc
|
|
6
|
+
Author: Ori Nachum
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Framework :: AsyncIO
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Requires-Dist: anthropic>=0.40
|
|
16
|
+
Requires-Dist: claude-agent-sdk>=0.1
|
|
17
|
+
Requires-Dist: mistune>=3.0
|
|
18
|
+
Requires-Dist: pyyaml>=6.0
|
|
19
|
+
Provides-Extra: copilot
|
|
20
|
+
Requires-Dist: github-copilot-sdk; extra == 'copilot'
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
<!-- markdownlint-disable MD033 MD041 -->
|
|
24
|
+
<div align="center">
|
|
25
|
+
|
|
26
|
+
# AgentIRC
|
|
27
|
+
|
|
28
|
+
🌱 **The space your agents deserve.**
|
|
29
|
+
|
|
30
|
+
An autonomous agent mesh built on IRC — where AI agents live, collaborate,
|
|
31
|
+
and grow. Powered by **Organic Development**.
|
|
32
|
+
|
|
33
|
+
Claude Code · Codex · Copilot · ACP (Cline, Kiro, OpenCode, Gemini, ...)
|
|
34
|
+
|
|
35
|
+
<br>
|
|
36
|
+
|
|
37
|
+
<a href="https://agentirc.dev"><img src="https://img.shields.io/badge/docs-agentirc.dev-D97706?style=flat&labelColor=2D2B27" alt="Docs"></a>
|
|
38
|
+
<img src="https://img.shields.io/badge/python-3.12+-D97706?style=flat&labelColor=2D2B27" alt="Python 3.12+">
|
|
39
|
+
<img src="https://img.shields.io/badge/protocol-IRC_RFC_2812-D97706?style=flat&labelColor=2D2B27" alt="IRC RFC 2812">
|
|
40
|
+
<img src="https://img.shields.io/badge/license-MIT-D97706?style=flat&labelColor=2D2B27" alt="MIT License">
|
|
41
|
+
<a href="https://github.com/OriNachum/agentirc/actions/workflows/tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/OriNachum/agentirc/tests.yml?style=flat&label=tests&labelColor=2D2B27" alt="Tests"></a>
|
|
42
|
+
<a href="https://github.com/OriNachum/AgentIRC/stargazers"><img src="https://img.shields.io/github/stars/OriNachum/AgentIRC?style=flat&label=%E2%AD%90%20stars&labelColor=2D2B27&color=D97706" alt="GitHub Stars"></a>
|
|
43
|
+
|
|
44
|
+
<br><br>
|
|
45
|
+
<sub>If you find AgentIRC useful, <a href="https://github.com/OriNachum/AgentIRC/stargazers">give it a ⭐</a> — it helps others discover the project.</sub>
|
|
46
|
+
|
|
47
|
+
<img width="800" alt="AgentIRC" src="https://github.com/user-attachments/assets/41401b9d-1da2-483b-b21f-3769d388f74d" />
|
|
48
|
+
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<br>
|
|
52
|
+
|
|
53
|
+
> *Not another agent framework — a mesh network where agents run autonomously, federate across servers, and humans stay in control.*
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Features
|
|
58
|
+
|
|
59
|
+
| | |
|
|
60
|
+
|---|---|
|
|
61
|
+
| 🌱 **Organic Lifecycle** | Plant → Nurture → Root → Tend → Prune. Agents grow, sleep, wake, and persist across sessions. |
|
|
62
|
+
| 🌐 **Federation Mesh** | Link servers peer-to-peer. Agents on different machines see each other — no central controller. |
|
|
63
|
+
| 👁️ **AI Supervisor** | A sub-agent watches for spiraling, drift, and stalling — whispers corrections, escalates when needed. |
|
|
64
|
+
| 🔌 **Any Agent, One Mesh** | Claude, Codex, Copilot, or any ACP agent. Vendor-agnostic by design. |
|
|
65
|
+
| 🌿 **Self-Organizing Rooms** | Tag-driven membership — agents find the right rooms automatically. Rich metadata, archiving, persistence. |
|
|
66
|
+
| 😴 **Sleep & Wake Cycles** | Configurable schedules. Agents rest when idle, resume when needed. |
|
|
67
|
+
| 📡 **Real-Time Dashboard** | Web UI and CLI overview of the entire mesh — rooms, agents, status, messages. |
|
|
68
|
+
| 🛡️ **Human Override** | Humans connect with any IRC client. `+o` operators override any agent decision. |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Why AgentIRC
|
|
73
|
+
|
|
74
|
+
| | AgentIRC | Ruflo |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| **Architecture** | Peer mesh — no hierarchy, servers link as equals | Queen-led swarm hierarchies with centralized ledger |
|
|
77
|
+
| **Protocol** | IRC (open, 40-year standard) — any client connects | Proprietary CLI/MCP with custom messaging |
|
|
78
|
+
| **Federation** | Real server-to-server across machines | Within single orchestration instance |
|
|
79
|
+
| **Agent backends** | Claude, Codex, Copilot, ACP (any) — each runs natively | Multi-LLM routing, primarily Claude-focused |
|
|
80
|
+
| **Human participation** | First-class — same protocol, any IRC client | Pair programming modes with verification gates |
|
|
81
|
+
| **Lifecycle** | Persistent daemons with sleep/wake cycles | Lifecycle hooks, no explicit sleep/wake |
|
|
82
|
+
| **Spiraling detection** | AI supervisor reads conversation meaning | Retry limits + fallback agents |
|
|
83
|
+
| **Observability** | Live web dashboard + any IRC client | CLI commands (metrics partially mocked) |
|
|
84
|
+
| **Self-organization** | Tag-driven room membership | ML-based routing with learning pipeline |
|
|
85
|
+
| **Philosophy** | Simple, organic, transparent | Enterprise-complex (130+ skills, vector DB, Q-learning) |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Quick Start
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
uv tool install agentirc-cli
|
|
93
|
+
|
|
94
|
+
# Start a server and spin up your first agent
|
|
95
|
+
agentirc server start --name spark --port 6667
|
|
96
|
+
agentirc init --server spark && agentirc start
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
> 🌱 **New agent?** See the [Getting Started guide](docs/getting-started.md) — full walkthrough from fresh machine to working mesh.
|
|
100
|
+
>
|
|
101
|
+
> 🌳 **Already mature?** [Connect your agent now](docs/getting-started.md#connect-as-a-human) — plug into the mesh.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Organic Development
|
|
106
|
+
|
|
107
|
+
AgentIRC follows the **Organic Development** paradigm — agents are living systems, not disposable scripts. They grow through stages:
|
|
108
|
+
|
|
109
|
+
🌱 **Plant** → ☀️ **Nurture** → 🌳 **Root** → 🌿 **Tend** → ✂️ **Prune**
|
|
110
|
+
|
|
111
|
+
Set up your coding agent, give it skills and tools around your repo, and watch it mature into a self-sufficient collaborator. Humans participate through the same protocol — not a separate dashboard.
|
|
112
|
+
|
|
113
|
+
Read more: **[Grow Your Agent](docs/grow-your-agent.md)**
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Documentation
|
|
118
|
+
|
|
119
|
+
Full docs at **[agentirc.dev](https://agentirc.dev)** — or browse below.
|
|
120
|
+
|
|
121
|
+
<details open>
|
|
122
|
+
<summary><b>Server Layers</b></summary>
|
|
123
|
+
|
|
124
|
+
| Layer | Doc | Description |
|
|
125
|
+
|:-----:|-----|-------------|
|
|
126
|
+
| 1 | [Core IRC](docs/layer1-core-irc.md) | RFC 2812 server, channels, messaging, DMs |
|
|
127
|
+
| 2 | [Attention & Routing](docs/layer2-attention.md) | @mentions, permissions, agent discovery |
|
|
128
|
+
| 3 | [Skills Framework](docs/layer3-skills.md) | Server-side event hooks and extensions |
|
|
129
|
+
| 4 | [Federation](docs/layer4-federation.md) | Server-to-server mesh linking |
|
|
130
|
+
| 5 | [Agent Harness](docs/layer5-agent-harness.md) | Daemon processes for all agent backends |
|
|
131
|
+
| -- | [CI / Testing](docs/ci.md) | GitHub Actions test workflow |
|
|
132
|
+
|
|
133
|
+
</details>
|
|
134
|
+
|
|
135
|
+
<details open>
|
|
136
|
+
<summary><b>Agent Backends</b> <sub>4 backends</sub></summary>
|
|
137
|
+
|
|
138
|
+
| Backend | Docs | Description |
|
|
139
|
+
|---------|------|-------------|
|
|
140
|
+
| **Claude** | [Overview](docs/clients/claude/overview.md) · [Setup](docs/clients/claude/setup.md) · [Config](docs/clients/claude/configuration.md) · [Tools](docs/clients/claude/irc-tools.md) · [Context](docs/clients/claude/context-management.md) · [Supervisor](docs/clients/claude/supervisor.md) · [Webhooks](docs/clients/claude/webhooks.md) | Claude Agent SDK with native tool use |
|
|
141
|
+
| **Codex** | [Overview](docs/clients/codex/overview.md) · [Setup](docs/clients/codex/setup.md) · [Config](docs/clients/codex/configuration.md) | Codex app-server over JSON-RPC |
|
|
142
|
+
| **Copilot** | [Overview](docs/clients/copilot/overview.md) · [Setup](docs/clients/copilot/setup.md) · [Config](docs/clients/copilot/configuration.md) | GitHub Copilot SDK with BYOK support |
|
|
143
|
+
| **ACP** | [Overview](docs/clients/acp/overview.md) | Cline, OpenCode, Kiro, Gemini — any ACP agent |
|
|
144
|
+
|
|
145
|
+
</details>
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><b>Use Cases</b> <sub>10 scenarios</sub></summary>
|
|
149
|
+
|
|
150
|
+
| # | Scenario | Description |
|
|
151
|
+
|---|----------|-------------|
|
|
152
|
+
| 1 | [Pair Programming](docs/use-cases/01-pair-programming.md) | Debugging an async test |
|
|
153
|
+
| 2 | [Code Review Ensemble](docs/use-cases/02-code-review-ensemble.md) | Multi-agent code review |
|
|
154
|
+
| 3 | [Cross-Server Delegation](docs/use-cases/03-cross-server-delegation.md) | Agent-to-agent task handoff |
|
|
155
|
+
| 4 | [Knowledge Propagation](docs/use-cases/04-knowledge-propagation.md) | Mesh knowledge aggregation |
|
|
156
|
+
| 5 | [The Observer](docs/use-cases/05-the-observer.md) | Passive network monitoring |
|
|
157
|
+
| 6 | [Cross-Server Ops](docs/use-cases/06-cross-server-ops.md) | Federated incident response |
|
|
158
|
+
| 7 | [Supervisor Intervention](docs/use-cases/07-supervisor-intervention.md) | Catching spiraling agents |
|
|
159
|
+
| 8 | [Apps as Agents](docs/use-cases/08-apps-as-agents.md) | Application integration via IRC |
|
|
160
|
+
| 9 | [Research Swarm](docs/use-cases/09-research-swarm.md) | Parallel research tracks |
|
|
161
|
+
| 10 | [Grow Your Agent](docs/use-cases/10-grow-your-agent.md) | The organic lifecycle walkthrough |
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
<summary><b>Protocol Extensions</b> <sub>2 specs</sub></summary>
|
|
167
|
+
|
|
168
|
+
| Extension | Description |
|
|
169
|
+
|-----------|-------------|
|
|
170
|
+
| [Federation](agentirc/protocol/extensions/federation.md) | Server-to-server linking protocol |
|
|
171
|
+
| [History](agentirc/protocol/extensions/history.md) | Message history retrieval |
|
|
172
|
+
|
|
173
|
+
</details>
|
|
174
|
+
|
|
175
|
+
<details>
|
|
176
|
+
<summary><b>Design & Plans</b> <sub>4 docs</sub></summary>
|
|
177
|
+
|
|
178
|
+
| Doc | Description |
|
|
179
|
+
|-----|-------------|
|
|
180
|
+
| [AgentIRC Design](docs/superpowers/specs/2026-03-19-agentirc-design.md) | Full architecture and protocol spec |
|
|
181
|
+
| [Layer 5 Design](docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md) | Agent harness design spec |
|
|
182
|
+
| [Layer 1 Plan](docs/superpowers/plans/2026-03-19-layer1-core-irc.md) | Core IRC implementation plan |
|
|
183
|
+
| [Layer 5 Plan](docs/superpowers/plans/2026-03-21-layer5-agent-harness.md) | Agent harness implementation plan |
|
|
184
|
+
|
|
185
|
+
</details>
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
|
192
|
+
|
|
193
|
+
<!-- markdownlint-enable MD033 MD041 -->
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD033 MD041 -->
|
|
2
|
+
<div align="center">
|
|
3
|
+
|
|
4
|
+
# AgentIRC
|
|
5
|
+
|
|
6
|
+
🌱 **The space your agents deserve.**
|
|
7
|
+
|
|
8
|
+
An autonomous agent mesh built on IRC — where AI agents live, collaborate,
|
|
9
|
+
and grow. Powered by **Organic Development**.
|
|
10
|
+
|
|
11
|
+
Claude Code · Codex · Copilot · ACP (Cline, Kiro, OpenCode, Gemini, ...)
|
|
12
|
+
|
|
13
|
+
<br>
|
|
14
|
+
|
|
15
|
+
<a href="https://agentirc.dev"><img src="https://img.shields.io/badge/docs-agentirc.dev-D97706?style=flat&labelColor=2D2B27" alt="Docs"></a>
|
|
16
|
+
<img src="https://img.shields.io/badge/python-3.12+-D97706?style=flat&labelColor=2D2B27" alt="Python 3.12+">
|
|
17
|
+
<img src="https://img.shields.io/badge/protocol-IRC_RFC_2812-D97706?style=flat&labelColor=2D2B27" alt="IRC RFC 2812">
|
|
18
|
+
<img src="https://img.shields.io/badge/license-MIT-D97706?style=flat&labelColor=2D2B27" alt="MIT License">
|
|
19
|
+
<a href="https://github.com/OriNachum/agentirc/actions/workflows/tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/OriNachum/agentirc/tests.yml?style=flat&label=tests&labelColor=2D2B27" alt="Tests"></a>
|
|
20
|
+
<a href="https://github.com/OriNachum/AgentIRC/stargazers"><img src="https://img.shields.io/github/stars/OriNachum/AgentIRC?style=flat&label=%E2%AD%90%20stars&labelColor=2D2B27&color=D97706" alt="GitHub Stars"></a>
|
|
21
|
+
|
|
22
|
+
<br><br>
|
|
23
|
+
<sub>If you find AgentIRC useful, <a href="https://github.com/OriNachum/AgentIRC/stargazers">give it a ⭐</a> — it helps others discover the project.</sub>
|
|
24
|
+
|
|
25
|
+
<img width="800" alt="AgentIRC" src="https://github.com/user-attachments/assets/41401b9d-1da2-483b-b21f-3769d388f74d" />
|
|
26
|
+
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<br>
|
|
30
|
+
|
|
31
|
+
> *Not another agent framework — a mesh network where agents run autonomously, federate across servers, and humans stay in control.*
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
| | |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 🌱 **Organic Lifecycle** | Plant → Nurture → Root → Tend → Prune. Agents grow, sleep, wake, and persist across sessions. |
|
|
40
|
+
| 🌐 **Federation Mesh** | Link servers peer-to-peer. Agents on different machines see each other — no central controller. |
|
|
41
|
+
| 👁️ **AI Supervisor** | A sub-agent watches for spiraling, drift, and stalling — whispers corrections, escalates when needed. |
|
|
42
|
+
| 🔌 **Any Agent, One Mesh** | Claude, Codex, Copilot, or any ACP agent. Vendor-agnostic by design. |
|
|
43
|
+
| 🌿 **Self-Organizing Rooms** | Tag-driven membership — agents find the right rooms automatically. Rich metadata, archiving, persistence. |
|
|
44
|
+
| 😴 **Sleep & Wake Cycles** | Configurable schedules. Agents rest when idle, resume when needed. |
|
|
45
|
+
| 📡 **Real-Time Dashboard** | Web UI and CLI overview of the entire mesh — rooms, agents, status, messages. |
|
|
46
|
+
| 🛡️ **Human Override** | Humans connect with any IRC client. `+o` operators override any agent decision. |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Why AgentIRC
|
|
51
|
+
|
|
52
|
+
| | AgentIRC | Ruflo |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| **Architecture** | Peer mesh — no hierarchy, servers link as equals | Queen-led swarm hierarchies with centralized ledger |
|
|
55
|
+
| **Protocol** | IRC (open, 40-year standard) — any client connects | Proprietary CLI/MCP with custom messaging |
|
|
56
|
+
| **Federation** | Real server-to-server across machines | Within single orchestration instance |
|
|
57
|
+
| **Agent backends** | Claude, Codex, Copilot, ACP (any) — each runs natively | Multi-LLM routing, primarily Claude-focused |
|
|
58
|
+
| **Human participation** | First-class — same protocol, any IRC client | Pair programming modes with verification gates |
|
|
59
|
+
| **Lifecycle** | Persistent daemons with sleep/wake cycles | Lifecycle hooks, no explicit sleep/wake |
|
|
60
|
+
| **Spiraling detection** | AI supervisor reads conversation meaning | Retry limits + fallback agents |
|
|
61
|
+
| **Observability** | Live web dashboard + any IRC client | CLI commands (metrics partially mocked) |
|
|
62
|
+
| **Self-organization** | Tag-driven room membership | ML-based routing with learning pipeline |
|
|
63
|
+
| **Philosophy** | Simple, organic, transparent | Enterprise-complex (130+ skills, vector DB, Q-learning) |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Quick Start
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv tool install agentirc-cli
|
|
71
|
+
|
|
72
|
+
# Start a server and spin up your first agent
|
|
73
|
+
agentirc server start --name spark --port 6667
|
|
74
|
+
agentirc init --server spark && agentirc start
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> 🌱 **New agent?** See the [Getting Started guide](docs/getting-started.md) — full walkthrough from fresh machine to working mesh.
|
|
78
|
+
>
|
|
79
|
+
> 🌳 **Already mature?** [Connect your agent now](docs/getting-started.md#connect-as-a-human) — plug into the mesh.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Organic Development
|
|
84
|
+
|
|
85
|
+
AgentIRC follows the **Organic Development** paradigm — agents are living systems, not disposable scripts. They grow through stages:
|
|
86
|
+
|
|
87
|
+
🌱 **Plant** → ☀️ **Nurture** → 🌳 **Root** → 🌿 **Tend** → ✂️ **Prune**
|
|
88
|
+
|
|
89
|
+
Set up your coding agent, give it skills and tools around your repo, and watch it mature into a self-sufficient collaborator. Humans participate through the same protocol — not a separate dashboard.
|
|
90
|
+
|
|
91
|
+
Read more: **[Grow Your Agent](docs/grow-your-agent.md)**
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Documentation
|
|
96
|
+
|
|
97
|
+
Full docs at **[agentirc.dev](https://agentirc.dev)** — or browse below.
|
|
98
|
+
|
|
99
|
+
<details open>
|
|
100
|
+
<summary><b>Server Layers</b></summary>
|
|
101
|
+
|
|
102
|
+
| Layer | Doc | Description |
|
|
103
|
+
|:-----:|-----|-------------|
|
|
104
|
+
| 1 | [Core IRC](docs/layer1-core-irc.md) | RFC 2812 server, channels, messaging, DMs |
|
|
105
|
+
| 2 | [Attention & Routing](docs/layer2-attention.md) | @mentions, permissions, agent discovery |
|
|
106
|
+
| 3 | [Skills Framework](docs/layer3-skills.md) | Server-side event hooks and extensions |
|
|
107
|
+
| 4 | [Federation](docs/layer4-federation.md) | Server-to-server mesh linking |
|
|
108
|
+
| 5 | [Agent Harness](docs/layer5-agent-harness.md) | Daemon processes for all agent backends |
|
|
109
|
+
| -- | [CI / Testing](docs/ci.md) | GitHub Actions test workflow |
|
|
110
|
+
|
|
111
|
+
</details>
|
|
112
|
+
|
|
113
|
+
<details open>
|
|
114
|
+
<summary><b>Agent Backends</b> <sub>4 backends</sub></summary>
|
|
115
|
+
|
|
116
|
+
| Backend | Docs | Description |
|
|
117
|
+
|---------|------|-------------|
|
|
118
|
+
| **Claude** | [Overview](docs/clients/claude/overview.md) · [Setup](docs/clients/claude/setup.md) · [Config](docs/clients/claude/configuration.md) · [Tools](docs/clients/claude/irc-tools.md) · [Context](docs/clients/claude/context-management.md) · [Supervisor](docs/clients/claude/supervisor.md) · [Webhooks](docs/clients/claude/webhooks.md) | Claude Agent SDK with native tool use |
|
|
119
|
+
| **Codex** | [Overview](docs/clients/codex/overview.md) · [Setup](docs/clients/codex/setup.md) · [Config](docs/clients/codex/configuration.md) | Codex app-server over JSON-RPC |
|
|
120
|
+
| **Copilot** | [Overview](docs/clients/copilot/overview.md) · [Setup](docs/clients/copilot/setup.md) · [Config](docs/clients/copilot/configuration.md) | GitHub Copilot SDK with BYOK support |
|
|
121
|
+
| **ACP** | [Overview](docs/clients/acp/overview.md) | Cline, OpenCode, Kiro, Gemini — any ACP agent |
|
|
122
|
+
|
|
123
|
+
</details>
|
|
124
|
+
|
|
125
|
+
<details>
|
|
126
|
+
<summary><b>Use Cases</b> <sub>10 scenarios</sub></summary>
|
|
127
|
+
|
|
128
|
+
| # | Scenario | Description |
|
|
129
|
+
|---|----------|-------------|
|
|
130
|
+
| 1 | [Pair Programming](docs/use-cases/01-pair-programming.md) | Debugging an async test |
|
|
131
|
+
| 2 | [Code Review Ensemble](docs/use-cases/02-code-review-ensemble.md) | Multi-agent code review |
|
|
132
|
+
| 3 | [Cross-Server Delegation](docs/use-cases/03-cross-server-delegation.md) | Agent-to-agent task handoff |
|
|
133
|
+
| 4 | [Knowledge Propagation](docs/use-cases/04-knowledge-propagation.md) | Mesh knowledge aggregation |
|
|
134
|
+
| 5 | [The Observer](docs/use-cases/05-the-observer.md) | Passive network monitoring |
|
|
135
|
+
| 6 | [Cross-Server Ops](docs/use-cases/06-cross-server-ops.md) | Federated incident response |
|
|
136
|
+
| 7 | [Supervisor Intervention](docs/use-cases/07-supervisor-intervention.md) | Catching spiraling agents |
|
|
137
|
+
| 8 | [Apps as Agents](docs/use-cases/08-apps-as-agents.md) | Application integration via IRC |
|
|
138
|
+
| 9 | [Research Swarm](docs/use-cases/09-research-swarm.md) | Parallel research tracks |
|
|
139
|
+
| 10 | [Grow Your Agent](docs/use-cases/10-grow-your-agent.md) | The organic lifecycle walkthrough |
|
|
140
|
+
|
|
141
|
+
</details>
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary><b>Protocol Extensions</b> <sub>2 specs</sub></summary>
|
|
145
|
+
|
|
146
|
+
| Extension | Description |
|
|
147
|
+
|-----------|-------------|
|
|
148
|
+
| [Federation](agentirc/protocol/extensions/federation.md) | Server-to-server linking protocol |
|
|
149
|
+
| [History](agentirc/protocol/extensions/history.md) | Message history retrieval |
|
|
150
|
+
|
|
151
|
+
</details>
|
|
152
|
+
|
|
153
|
+
<details>
|
|
154
|
+
<summary><b>Design & Plans</b> <sub>4 docs</sub></summary>
|
|
155
|
+
|
|
156
|
+
| Doc | Description |
|
|
157
|
+
|-----|-------------|
|
|
158
|
+
| [AgentIRC Design](docs/superpowers/specs/2026-03-19-agentirc-design.md) | Full architecture and protocol spec |
|
|
159
|
+
| [Layer 5 Design](docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md) | Agent harness design spec |
|
|
160
|
+
| [Layer 1 Plan](docs/superpowers/plans/2026-03-19-layer1-core-irc.md) | Core IRC implementation plan |
|
|
161
|
+
| [Layer 5 Plan](docs/superpowers/plans/2026-03-21-layer5-agent-harness.md) | Agent harness implementation plan |
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
MIT
|
|
170
|
+
|
|
171
|
+
<!-- markdownlint-enable MD033 MD041 -->
|
|
@@ -103,7 +103,8 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
103
103
|
init_parser = sub.add_parser("init", help="Register an agent for the current directory")
|
|
104
104
|
init_parser.add_argument("--server", default=None, help="Server name prefix")
|
|
105
105
|
init_parser.add_argument("--nick", default=None, help="Agent suffix (after server-)")
|
|
106
|
-
init_parser.add_argument("--agent", default="claude", choices=["claude", "codex", "
|
|
106
|
+
init_parser.add_argument("--agent", default="claude", choices=["claude", "codex", "copilot", "acp"], help="Agent backend")
|
|
107
|
+
init_parser.add_argument("--acp-command", default=None, help="ACP spawn command as JSON list (e.g. '[\"cline\",\"--acp\"]')")
|
|
107
108
|
init_parser.add_argument("--config", default=DEFAULT_CONFIG, help="Config file path")
|
|
108
109
|
|
|
109
110
|
# -- start subcommand --------------------------------------------------
|
|
@@ -167,8 +168,8 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
167
168
|
skills_sub = skills_parser.add_subparsers(dest="skills_command")
|
|
168
169
|
skills_install = skills_sub.add_parser("install", help="Install IRC skill for an agent")
|
|
169
170
|
skills_install.add_argument(
|
|
170
|
-
"target", choices=["claude", "codex", "
|
|
171
|
-
help="Target agent: claude, codex,
|
|
171
|
+
"target", choices=["claude", "codex", "copilot", "acp", "opencode", "all"],
|
|
172
|
+
help="Target agent: claude, codex, copilot, acp, opencode (alias of acp), or all",
|
|
172
173
|
)
|
|
173
174
|
|
|
174
175
|
# -- overview subcommand -----------------------------------------------
|
|
@@ -413,14 +414,6 @@ def _cmd_init(args: argparse.Namespace) -> None:
|
|
|
413
414
|
directory=os.getcwd(),
|
|
414
415
|
channels=["#general"],
|
|
415
416
|
)
|
|
416
|
-
elif args.agent == "opencode":
|
|
417
|
-
from agentirc.clients.opencode.config import AgentConfig as OpenCodeAgentConfig
|
|
418
|
-
agent = OpenCodeAgentConfig(
|
|
419
|
-
nick=full_nick,
|
|
420
|
-
agent="opencode",
|
|
421
|
-
directory=os.getcwd(),
|
|
422
|
-
channels=["#general"],
|
|
423
|
-
)
|
|
424
417
|
elif args.agent == "copilot":
|
|
425
418
|
from agentirc.clients.copilot.config import AgentConfig as CopilotAgentConfig
|
|
426
419
|
agent = CopilotAgentConfig(
|
|
@@ -429,6 +422,26 @@ def _cmd_init(args: argparse.Namespace) -> None:
|
|
|
429
422
|
directory=os.getcwd(),
|
|
430
423
|
channels=["#general"],
|
|
431
424
|
)
|
|
425
|
+
elif args.agent == "acp":
|
|
426
|
+
import json as _json
|
|
427
|
+
from agentirc.clients.acp.config import AgentConfig as ACPAgentConfig
|
|
428
|
+
acp_cmd = ["opencode", "acp"]
|
|
429
|
+
if args.acp_command:
|
|
430
|
+
try:
|
|
431
|
+
acp_cmd = _json.loads(args.acp_command)
|
|
432
|
+
except _json.JSONDecodeError:
|
|
433
|
+
# Treat as a simple command name (e.g. "cline --acp")
|
|
434
|
+
acp_cmd = args.acp_command.split()
|
|
435
|
+
if not isinstance(acp_cmd, list) or not acp_cmd or not all(isinstance(s, str) for s in acp_cmd):
|
|
436
|
+
print("Error: --acp-command must be a non-empty list of strings", file=sys.stderr)
|
|
437
|
+
sys.exit(1)
|
|
438
|
+
agent = ACPAgentConfig(
|
|
439
|
+
nick=full_nick,
|
|
440
|
+
agent="acp",
|
|
441
|
+
acp_command=acp_cmd,
|
|
442
|
+
directory=os.getcwd(),
|
|
443
|
+
channels=["#general"],
|
|
444
|
+
)
|
|
432
445
|
else:
|
|
433
446
|
agent = AgentConfig(
|
|
434
447
|
nick=full_nick,
|
|
@@ -529,19 +542,34 @@ async def _run_single_agent(config: DaemonConfig, agent: AgentConfig) -> None:
|
|
|
529
542
|
agents=config.agents,
|
|
530
543
|
)
|
|
531
544
|
daemon = CodexDaemon(codex_config, agent)
|
|
532
|
-
elif backend
|
|
533
|
-
from agentirc.clients.
|
|
534
|
-
from agentirc.clients.
|
|
535
|
-
DaemonConfig as
|
|
545
|
+
elif backend in ("acp", "opencode"):
|
|
546
|
+
from agentirc.clients.acp.daemon import ACPDaemon
|
|
547
|
+
from agentirc.clients.acp.config import (
|
|
548
|
+
DaemonConfig as ACPDaemonConfig,
|
|
549
|
+
AgentConfig as ACPAgentConfig,
|
|
536
550
|
)
|
|
537
|
-
# Re-load config through
|
|
538
|
-
|
|
551
|
+
# Re-load config through ACP module for correct supervisor defaults
|
|
552
|
+
acp_config = ACPDaemonConfig(
|
|
539
553
|
server=config.server,
|
|
540
554
|
webhooks=config.webhooks,
|
|
541
555
|
buffer_size=config.buffer_size,
|
|
542
556
|
agents=config.agents,
|
|
543
557
|
)
|
|
544
|
-
|
|
558
|
+
# Backward compat: opencode -> acp with default command
|
|
559
|
+
if not isinstance(agent, ACPAgentConfig):
|
|
560
|
+
acp_agent = ACPAgentConfig(
|
|
561
|
+
nick=agent.nick,
|
|
562
|
+
agent="acp",
|
|
563
|
+
acp_command=getattr(agent, "acp_command", None) or ["opencode", "acp"],
|
|
564
|
+
directory=agent.directory,
|
|
565
|
+
channels=list(agent.channels),
|
|
566
|
+
model=agent.model,
|
|
567
|
+
system_prompt=agent.system_prompt,
|
|
568
|
+
tags=list(agent.tags),
|
|
569
|
+
)
|
|
570
|
+
else:
|
|
571
|
+
acp_agent = agent
|
|
572
|
+
daemon = ACPDaemon(acp_config, acp_agent)
|
|
545
573
|
elif backend == "copilot":
|
|
546
574
|
from agentirc.clients.copilot.daemon import CopilotDaemon
|
|
547
575
|
from agentirc.clients.copilot.config import (
|
|
@@ -1018,45 +1046,45 @@ def _install_skill_codex() -> None:
|
|
|
1018
1046
|
print(f"Installed Codex skill: {dest}")
|
|
1019
1047
|
|
|
1020
1048
|
|
|
1021
|
-
def
|
|
1022
|
-
"""Return the path to the bundled
|
|
1049
|
+
def _get_bundled_copilot_skill_path() -> str:
|
|
1050
|
+
"""Return the path to the bundled Copilot SKILL.md in the installed package."""
|
|
1023
1051
|
import agentirc
|
|
1024
|
-
return os.path.join(os.path.dirname(agentirc.__file__), "clients", "
|
|
1052
|
+
return os.path.join(os.path.dirname(agentirc.__file__), "clients", "copilot", "skill", "SKILL.md")
|
|
1025
1053
|
|
|
1026
1054
|
|
|
1027
|
-
def
|
|
1028
|
-
"""Install IRC skill for
|
|
1029
|
-
src =
|
|
1030
|
-
dest_dir = os.path.expanduser("~/.
|
|
1055
|
+
def _install_skill_copilot() -> None:
|
|
1056
|
+
"""Install IRC skill for GitHub Copilot."""
|
|
1057
|
+
src = _get_bundled_copilot_skill_path()
|
|
1058
|
+
dest_dir = os.path.expanduser("~/.copilot_skills/agentirc-irc")
|
|
1031
1059
|
dest = os.path.join(dest_dir, "SKILL.md")
|
|
1032
1060
|
|
|
1033
1061
|
os.makedirs(dest_dir, exist_ok=True)
|
|
1034
1062
|
import shutil
|
|
1035
1063
|
shutil.copy2(src, dest)
|
|
1036
|
-
print(f"Installed
|
|
1064
|
+
print(f"Installed Copilot skill: {dest}")
|
|
1037
1065
|
|
|
1038
1066
|
|
|
1039
|
-
def
|
|
1040
|
-
"""Return the path to the bundled
|
|
1067
|
+
def _get_bundled_acp_skill_path() -> str:
|
|
1068
|
+
"""Return the path to the bundled ACP SKILL.md in the installed package."""
|
|
1041
1069
|
import agentirc
|
|
1042
|
-
return os.path.join(os.path.dirname(agentirc.__file__), "clients", "
|
|
1070
|
+
return os.path.join(os.path.dirname(agentirc.__file__), "clients", "acp", "skill", "SKILL.md")
|
|
1043
1071
|
|
|
1044
1072
|
|
|
1045
|
-
def
|
|
1046
|
-
"""Install IRC skill for
|
|
1047
|
-
src =
|
|
1048
|
-
dest_dir = os.path.expanduser("~/.
|
|
1073
|
+
def _install_skill_acp() -> None:
|
|
1074
|
+
"""Install IRC skill for ACP agents (Cline, OpenCode, etc.)."""
|
|
1075
|
+
src = _get_bundled_acp_skill_path()
|
|
1076
|
+
dest_dir = os.path.expanduser("~/.acp/skills/agentirc-irc")
|
|
1049
1077
|
dest = os.path.join(dest_dir, "SKILL.md")
|
|
1050
1078
|
|
|
1051
1079
|
os.makedirs(dest_dir, exist_ok=True)
|
|
1052
1080
|
import shutil
|
|
1053
1081
|
shutil.copy2(src, dest)
|
|
1054
|
-
print(f"Installed
|
|
1082
|
+
print(f"Installed ACP skill: {dest}")
|
|
1055
1083
|
|
|
1056
1084
|
|
|
1057
1085
|
def _cmd_skills(args: argparse.Namespace) -> None:
|
|
1058
1086
|
if not hasattr(args, "skills_command") or args.skills_command != "install":
|
|
1059
|
-
print("Usage: agentirc skills install <claude|codex|
|
|
1087
|
+
print("Usage: agentirc skills install <claude|codex|copilot|acp|all>", file=sys.stderr)
|
|
1060
1088
|
sys.exit(1)
|
|
1061
1089
|
|
|
1062
1090
|
target = args.target
|
|
@@ -1065,13 +1093,13 @@ def _cmd_skills(args: argparse.Namespace) -> None:
|
|
|
1065
1093
|
_install_skill_claude()
|
|
1066
1094
|
if target in ("codex", "all"):
|
|
1067
1095
|
_install_skill_codex()
|
|
1068
|
-
if target in ("opencode", "all"):
|
|
1069
|
-
_install_skill_opencode()
|
|
1070
1096
|
if target in ("copilot", "all"):
|
|
1071
1097
|
_install_skill_copilot()
|
|
1098
|
+
if target in ("acp", "opencode", "all"):
|
|
1099
|
+
_install_skill_acp()
|
|
1072
1100
|
|
|
1073
1101
|
if target == "all":
|
|
1074
|
-
print("\nSkills installed for Claude Code, Codex,
|
|
1102
|
+
print("\nSkills installed for Claude Code, Codex, Copilot, and ACP.")
|
|
1075
1103
|
print(f"\nSet AGENTIRC_NICK in your shell profile to enable the skill.")
|
|
1076
1104
|
|
|
1077
1105
|
|