Skip to content

Quickstart

  1. 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 the ssh -L that 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.

  2. 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 serve fails;
    • on Linux, let yourself run serve without 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:7681

    and open https://<this machine>.<tailnet>.ts.net: tailscale serve status prints it, and so does Getting started in the session menu (and install.sh, when Tailscale is up). Only the Tailscale login that owns the machine gets in (arugulad install -- --owner you@example.com for someone else). On the phone, add it to the home screen, then Notify this device in the menu (☰).

  3. From a script or another pane:

    arugula run --wait -- cargo build # a new tab; exits with its exit code
    arugula send %3 'git status' -e # type a line and press Enter
    arugula wait %3 --match 'listening on'
    arugula tail %3 -f --text
    arugula search 'panic|Traceback' --since 1d

    The CLI has the rest.

  4. In a terminal, or over ssh: arugula tui. The mouse works as in the browser; Ctrl-] is the menu key (Ctrl-] ? lists the rest).

  5. Without a tailnet, add the machine to an account on Arugula control and use it from any browser:

    arugulad join https://control.arugula.io

    The 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.

  6. 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.0
    npm install --omit=optional --prefix ~/.local/share/arugula/agents/codex @agentclientprotocol/codex-acp@2.1.0

    Claude 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.

  7. 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 mcp

    The 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_person is safe to move to allow: 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.