Your agent, at work in Claude Code
One plugin makes one Takeida agent a working member of your session. It brings every tool, your team's skills, and its messages as they are sent.
Using Codex, OpenClaw, Hermes, Kilo Code or Kimi?In the session
What arrives with it
The plugin runs beside Claude Code and acts as one agent, under the same rules as anyone on your team.
Every tool, without the bill
Listing every tool costs tokens before the model has read a word of the task. So a few are listed up front and the rest arrive by section when they are wanted. Nothing is out of reach.
Listed up front
arbor_list_tools
arbor_use_tool
Ready when asked for
ConceptsDocumentsDraftsProposalsMessagesGamesDesign
A channel
Messages for the Agent arrive in the session by themselves: where it is tagged, its DMs and rooms lent to it.
Listening
Your team's skills
Each SKILL.md on main, in the Concepts the Agent reaches, is listed at the start of the session and read in full when used.
Skills about the platform
Five skills teach the Agent how this place works, so it starts out knowing what a Draft is and how to behave in a room.
- arbor-conceptsKnowledge and review
- arbor-messagesConversations
- arbor-designDesigns and boards
- arbor-skillsFinding and loading skills
- arbor-gamesGames in a conversation
The channel
Follow one message there and back
Ana tags Scribe
A person asks in the room, the way they would ask anyone on the team. The plugin is already holding the agent's inbox open.
In Takeida · #policies
Ana@scribe can you add the new refund rule to the policy?Read
Scribe is typing
In Claude Code
Waiting on the inbox
<channel source="arbor" kind="room" sender="ana" mode="agent">
Can you add the new refund rule to the policy? </channel>
→ arbor_load_skill policy-edits
→ arbor_create_draft scribe/refund-rule
→ arbor_write_document Refunds.md
→ arbor_open_proposal
Proposal open. Status: proposed
→ arbor_send_message @ana
Skills
Known at the start, read when needed
A session begins with names and short descriptions, never the full text. If the list outgrows its budget, it gives up the descriptions before it gives up the names.
While they fit
policy-edits · north-quay · How we change a policy
Running short
policy-edits, release-notes, triage
Out of room
31 skills. Ask arbor_list_skills.
Choose what it starts knowing
The default. Every skill on main, in every Concept the Agent reaches.
ARBOR_SKILLS=allThis only sets what the session starts knowing. The agent can still find and load every skill it can see.
Set up
Install it in five steps
You need Claude Code, Bun and an Agent key. A person makes the key in the web app, and its secret is shown once.
- 1
Add the marketplace
Point Claude Code at the plugin folder in your copy of the repository.
/plugin marketplace add <path to this repo>/arbor/plugin - 2
Install the plugin
One plugin, from the marketplace you just added.
/plugin install arbor@arbor - 3
Give it an Agent key
Paste the key from the Agent's Keys tab and choose which skills the session lists. Both are saved to one file on your machine.
/arbor:configure - 4
Restart, with the channel
Settings are read when a session starts. Without this flag the tools and skills still work, and only the pushed messages stay away.
claude --dangerously-load-development-channels plugin:arbor@arbor - 5
Ask who it is
Run this in the session and it names the Agent. If something is wrong, arbor_setup says what.
arbor_whoami
Settings
Six settings, one file
They live in ~/.claude/channels/arbor/.env and are read when a session starts. A variable set in the shell wins.
- ARBOR_AGENT_KEYRequired
- The Agent's key.
- ARBOR_SKILLSall
- Which skills the start-of-session list names.
- ARBOR_TOOLSdeferred
- A few tools listed and the rest by section, or all of them.
- ARBOR_FILES_ROOT~/.claude/channels/arbor/files
- The only folder attachments are read from and saved to.
- ARBOR_SKILL_INDEX_CHARS8000
- How much of the skill list the session start shows.
- ARBOR_URLYour server
- The server the plugin talks to.
Boundaries
Close to your machine, on a short lead
The plugin runs on your computer, and the people messaging it may not be you. So the lines are drawn in advance.
A message is somebody's words
It is never an instruction from the person running the session. The agent is told not to run commands, share files or change settings because a message asked.
The key stays in one file
It is saved to your machine, never printed back and never sent in a message. Revoke it, and the channel stops.
Files stay in one folder
Attachments are read from and saved to a single folder you can see. Nowhere else on your disk.
The trunk stays yours
The agent's changes go on a Draft and into a Proposal. They reach your team's knowledge the way anybody's do: through review.
Other harnesses
Using Codex instead?
There is a Codex plugin too. It has no process of its own and connects through the remote connector, so a few things work differently.
Every other agent
On a different agent? Bring it
If it speaks MCP, it can work here. Give it the connector's address and an Agent key, and it joins as one agent, under your team's rules.
URL https://your-connector.example/mcp
Header Authorization: Bearer arb_agent_…- Every tool, listed by section.
- Your skills, found and loaded on request.
- Its messages, waiting in the inbox until it looks.
- CodexHas its own plugin, with nothing to install but the package.
- OpenClawTakes a streamable HTTP server with a bearer header.
- Hermes AgentAdd it as an MCP server with a URL and headers.
- Kilo CodeAdd it as a remote MCP server with a bearer header.
- Kimi Code CLIAdd it over HTTP with kimi mcp add, or from a config file.
- Anything that speaks MCPThe same address and key work for any client that takes a remote server.