Quickstart
-
Run
arugula web: it opens http://127.0.0.1:7681 in your browser, signed in (programs on this machine show its local token; see Advanced setup). Over ssh it prints the link and thessh -Lthat forwards the port to the computer you’re at. Right-click a pane or a tab for everything. Drag a tab or a pane onto another pane’s edge to split it there; drag dividers to resize. -
From your phone and other machines, put it behind Tailscale on this machine. The first time:
- turn on MagicDNS and HTTPS certificates in the tailnet’s
DNS settings, or
servefails; - on Linux, let yourself run
servewithout sudo:sudo tailscale set --operator=$USER; - on macOS, the app’s CLI may not be on your PATH: it’s
/Applications/Tailscale.app/Contents/MacOS/Tailscale.
Then:
tailscale serve --bg --https=443 http://127.0.0.1:7681and open
https://<this machine>.<tailnet>.ts.net:tailscale serve statusprints it, and so does Getting started in the session menu (andinstall.sh, when Tailscale is up). Only the Tailscale login that owns the machine gets in (arugulad install -- --owner you@example.comfor someone else). On the phone, add it to the home screen, then Notify this device in the menu (☰). - turn on MagicDNS and HTTPS certificates in the tailnet’s
DNS settings, or
-
From a script or another pane:
arugula run --wait -- cargo build # a new tab; exits with its exit codearugula send %3 'git status' -e # type a line and press Enterarugula wait %3 --match 'listening on'arugula tail %3 -f --textarugula search 'panic|Traceback' --since 1dThe CLI has the rest.
-
In a terminal, or over ssh:
arugula tui. The mouse works as in the browser; Ctrl-] is the menu key (Ctrl-] ? lists the rest). -
Without a tailnet, add the machine to an account on Arugula control and use it from any browser:
arugulad join https://control.arugula.ioThe hosted control is free during the beta, provided as is. See Arugula control, including running your own. With a team: make one in control (Teams…), invite people, and pick the team when you approve a machine’s join. Roles, personal vs team machines and sharing one session: Your machines, your team.
-
Agents. Start an agent… in a pane’s menu, or
arugula agent "fix the failing test". Claude Code and Codex run through an npm adapter (needs Node 20+).arugula setup claude, or Use Claude Code with Arugula in Getting started’s Agents step, installs Claude Code’s and adds Arugula’s MCP server (step 7) in one go; Start an agent… offers to install it too, in a pane you can watch. Or install it yourself:npm install --prefix ~/.local/share/arugula/agents/claude @agentclientprotocol/claude-agent-acp@0.85.0npm install --omit=optional --prefix ~/.local/share/arugula/agents/codex @agentclientprotocol/codex-acp@2.1.0Claude Code in an ordinary pane can raise the same notifications, question cards and permission cards, and take follow-ups, through its hooks: see Claude Code in a pane.
-
As tools for any agent (MCP). Give Claude Code (or Codex, or any MCP client) Arugula’s tools: it runs builds and dev servers in panes you can watch from the phone and take over, waits on them, starts and answers other agents, and searches what happened yesterday.
claude mcp add arugula -- arugula mcpThe read-only tools are safe to allow outright; leave the rest to ask. In
~/.claude/settings.json(or the project’s.claude/settings.json):{"permissions": {"allow": ["mcp__arugula__read_output", "mcp__arugula__wait", "mcp__arugula__list","mcp__arugula__history", "mcp__arugula__read_forge", "mcp__arugula__read_invite","mcp__arugula__read_file"],"ask": ["mcp__arugula__run", "mcp__arugula__send_input", "mcp__arugula__attach", "mcp__arugula__close","mcp__arugula__show", "mcp__arugula__start_agent", "mcp__arugula__prompt_agent","mcp__arugula__agent_respond", "mcp__arugula__draft", "mcp__arugula__invite_person","mcp__arugula__device_call"]}}invite_personis safe to move toallow: it only drafts. The card it raises beside the agent, which only the session’s owner can send, is the real gate.What it starts says “started by mcp:claude-code”. Agent blocks get the same tools by themselves, limited to their own tab. Over HTTP, tokens, and the tools: MCP.