`@agent`: name-addressable coworkers in your terminal
You @-mention people in Slack. Why can't you @-mention your agents in the terminal? In rysh, you can — @name talks, @@name manages.
Think about how you talk to a human teammate. You don't switch to a dedicated
"talk-to-Deniz" application, wait for it to load, and lose your place in whatever you
were doing. You type @deniz where you already are, say the thing, and keep working.
Now think about how you talk to your AI tooling. Alt-tab to the assistant. Focus its window. Paste context it lost since last time. Wait, watching. That's not how you treat a coworker; that's how you operate an appliance.
rysh makes agents addressable the way people are: by name, from wherever you already are.
The grammar
Two prefixes, two planes:
@code-reviewer take a look at the diff on this branch — actor code especially
@release-notes draft notes for everything merged since v0.1.24
@@code-reviewer stop
@@release-notes deactivate
@@release-notes activate
@name <prompt>— the data plane. Sends the prompt to the named agent's own execution loop. You keep your pane, your shell, your scroll position. The agent works in the background; you find out when it has something to say.@@name <command>— the control plane.stopcancels whatever it's doing mid-flight.deactivatebenches it: it stays defined, keeps its name, ignores prompts until youactivateit again. Management, not conversation.
The doubled prefix is deliberate. "Do work" and "be managed" are different verbs, and mixing them into one channel is how you end up with an agent that interprets "stop" as a topic to write an essay about.
One input line, an entire roster
Here's the shift this enables. In most agent setups, the surface is the agent: one window, one assistant, one conversation you have to be "in." Adding a second agent means adding a second window, and now you're a window manager.
In rysh, the input line you already own is a router. Behind it sits a registry of named
workers — spawn them from markdown files
(https://rysh.ai/blog/agents-from-a-markdown-file), list them with ##agent list, and
address any of them from any pane:
@test-writer cover the new codec paths, table-driven please
@docs-agent the README section on sessions is stale — fix it against the code
@code-reviewer both of those, when they're done
Three agents, three tasks, zero window switches. Your terminal stops being a place where you run one assistant and becomes a place where you staff work.
And the same grammar reaches further than you'd expect: names are resolved against
rysh's agent registry and its humanoid registry — humanoids being agents wired to
external channels like Slack or email. @support-triage summarize today's tickets
addresses a worker that lives half in your terminal and half in your inbox, with the
exact same syntax. One mention grammar, no matter where the worker faces.
Where replies land (and why that's not chaos)
An obvious worry: five agents talking into your terminal sounds like a scrollback nightmare. It isn't, for one structural reason — rysh panes keep separate output streams per mode. Your shell output is one stream. Your own AI prompts are another. Agent chatter is chat, a third.
You choose which pane an agent reports to:
##agent register-output code-reviewer
Now the reviewer's findings arrive in that pane's chat stream — not spliced into the
middle of your go test -v output, not lost in another window. Point different agents
at different panes and you've built yourself a tiny newsroom: work on the left,
correspondents filing on the right.
Why addressing beats switching
This seems like ergonomics. It's actually about what you'll do.
When talking to an agent costs a context switch, you batch. You save up questions, you do the work yourself because asking is friction, you use one generalist agent for everything because managing several isn't worth it. The tax shapes the behavior.
When talking to an agent costs typing its name, delegation becomes ambient. Small tasks get handed off at the moment you think of them, to the specialist whose standing orders fit. That's the actual difference between "we have an AI assistant" and working alongside agents — not model quality, but whether delegation is cheap enough to be reflexive.
The honest part
rysh runs on Claude — bring your own Anthropic key — and it's self-hostable, so the
roster of named workers lives in your session on your infra. The @ grammar
doesn't make the agents smarter; the model reasons, your skill files steer. What
addressing buys is throughput: more delegation happening, because each delegation
costs almost nothing.
Names are how humans scale collaboration. Turns out they're how you scale agents, too.
rysh is in private beta. If "a roster of named agents behind one input line" sounds like your kind of workflow, we're onboarding design partners — free access, direct line to the founder: https://rysh.ai/design-partner
Related: Autonomous agents from a markdown
file · ##agent spawn-all: hire a
whole team from a folder of markdown