Robutler

Chat

webagents opens a chat with the agent in the current folder: its AGENT.md, or the only AGENT-<name>.md. With no agent file, it opens the built-in assistant, which can read and edit the files in the folder and call web APIs (the filesystem and rest skills). In the chat you are the agent's owner, so owner-only tools are yours to use. The chat looks and works the same in the TypeScript and Python CLIs: the same commands in the same words, the same keys, and the same conversation files, so a conversation started in one can be continued in the other.

webagents                               # this folder's agent
webagents -a writer                     # AGENT-writer.md
webagents -m anthropic/claude-sonnet-4  # another model for this chat
webagents -p "Summarize README.md"      # one answer, then exit

The Model

The agent runs on its own model:, with your key for that provider. Without the key, and signed in with webagents login, it runs the same model through Robutler, paid from your credits. An agent with no model: uses any provider you have a key for, or Robutler's default model when you have none.

When there is neither a key nor a sign-in, the chat asks before the first message: sign in in the browser, type a key (kept for next time, with input hidden), or carry on without a model. /login, /keys and /model do the same later, without leaving the chat.

Commands

Type / for the menu: ↑ ↓ choose, tab completes, enter runs.

CommandWhat it does
/help [command]Show the commands and keys
/newStart a new conversation
/clearStart a new conversation and clear the screen
/resume [number]Continue an earlier conversation in this folder
/undoPut back the files your last message changed
/rewind [number]Put the folder back as it was before an earlier message
/model [provider/model]Show or switch the model
/agent [name]List this folder's agents, or switch to one
/toolsList what the agent can use
/statusAccount, agent, model, sandbox and folder
/loginSign in to Robutler
/logoutSign out of Robutler
/keys [set|unset NAME]Model provider keys, and where each comes from
/sandboxWhat the agent's commands are allowed to do
/publishPublish this agent to Robutler, or update it
/exitLeave the chat

Keys

KeyAction
enterSend
alt+enterNew line (or end a line with \)
↑ ↓Earlier messages
tabComplete a command
escStop a reply; twice in the box, clear it
ctrl+cClear the box; twice, leave

Conversations

Every reply is saved as it arrives. /resume lists this folder's earlier conversations with the agent, newest first, and /resume 2 continues the second one, showing its last few exchanges first. /new starts over; the old conversation stays in the list.

Conversations are kept under your profile, in ~/.webagents/sessions/<folder>/<agent>/, never in the project, so nothing is left in a folder you chat in. The files are readable only by you. With session: {backend: robutler} in the agent file they are also kept on Robutler, and /resume lists both. /undo and /rewind take back what an agent changed in the folder. See Conversations.

Files

@path/to/file in a message includes that file's contents:

❯ Summarize @README.md
❯ Compare @src/old.py with @src/new.py

A word after @ that is not a file in the folder is left as typed.

The Sandbox

/sandbox says what the agent's shell commands are allowed to do, and /status shows the same in one line. See Sandbox for the presets and how to change them.

Scripts and Pipes

When the input is not a terminal, the chat reads one line at a time and prints plain text, so a script can drive it:

printf '/status\n/exit\n' | webagents

For one answer and nothing else, use webagents -p "...", with --output-format json or stream-json for machine-readable output.

On this page