The starter config was one person's fleet hardcoded (claude-nx, claude-bdev, claude-or, pi on a local model), so any other instance opened the screen on routers pointing at providers that do not exist there. Now the starters are built from what the daemon actually has: every Claude Code profile that answers becomes a pool, with an "Auto" router on top of it. Fewer than two profiles is not a pool — nothing is written, and the screen starts empty; the next open tries again. Seeding happens once, the first time the screen reads the config, and never touches an existing config.json. That also moves the write out of the synchronous startup read, where no provider list could be asked for. Co-Authored-By: Claude Code <noreply@anthropic.com>
Paseo plugins
A set of plugins for Paseo — the app that runs coding agents (Claude Code, Codex, Cursor, OpenCode, pi) on your own machine and lets you drive them from the web, desktop and phone.
Paseo ships with providers, workspaces and terminals. These plugins add what a multi-account, multi-machine setup ends up needing: signing in to subscriptions from the client, one place for MCP connectors, chains that switch accounts when a limit runs out, plain chats without a project, and a theme.
What is in here
| Plugin | Section in Paseo | What it does |
|---|---|---|
claude-login |
Agent sign-ins | Sign in to subscription Claude Code profiles and Cursor from the client: a link opens in your browser, the code is pasted into the app. Shows plan, organization and the limit windows of every subscription and key. |
agent-router |
Agent router | Ordered chains of accounts and providers. When a limit runs out the chain moves on: Claude subscriptions switch in place (same agent, same session), other links pick the task up in a new agent. Auto sends the task to a cheap classifier and hands it to the right chain. |
obot-connectors |
Connectors | Services for agents through an Obot gateway: pick Jira, Slack, GitHub, Google or any custom MCP server, sign in once, and every new agent gets it as a single obot MCP. Several accounts of one service are supported. Also signs in tools agents use directly on the daemon machine (Google Cloud: gcloud, kubectl, ADC). |
chats |
Chats, New chat | Plain conversations like in claude.ai, not tied to a project: a private folder per chat, an agent picker, search and groups. With the agent-jail wrapper the agent runs in a sandbox without your home, projects and keys. |
monokai-pro |
Settings → Appearance | Monokai Pro (Classic filter) theme, client-only. |
Each plugin has its own OVERVIEW.md with the details, and a paseo-plugin.json manifest.
Screens
Agent sign-ins
Subscription tokens expire, and this used to be fixable only over SSH: log in on the daemon machine, copy the link into a browser, paste the code back into a terminal. The plugin moves the whole flow into the client, and keeps the limits of every account on one screen.
Agent router
Chains replace the manual choice between subscriptions. Claude accounts switch in the same session; Cursor, OpenRouter, pi and opencode continue the conversation in a new agent with the same model.
Connectors
One catalog for everything an agent may use, with a single sign-in and per-person tokens — other people's Jira never leaks into your agents.
Chats
Monokai Pro
Install
Paseo 0.11+ can install plugins straight from a Git repository, a subdirectory included:
paseo plugin install https://example.com/you/paseo-plugins.git:claude-login --ref main
paseo plugin install https://example.com/you/paseo-plugins.git:agent-router --ref main
paseo plugin install https://example.com/you/paseo-plugins.git:obot-connectors --ref main
paseo plugin install https://example.com/you/paseo-plugins.git:chats --ref main
paseo plugin install https://example.com/you/paseo-plugins.git:monokai-pro --ref main
A local checkout works too, and is what you want while developing:
paseo plugin install ~/projects/paseo-plugins/claude-login
paseo plugin reload claude-login # after editing; it does not restart the daemon
Update what was installed from Git:
paseo plugin update --all --check # what would change
paseo plugin update --all --yes # install it
An update replaces the plugin and restarts only that plugin's process, so running agents survive it.
A timer or a launch agent that runs paseo plugin update --all --yes every 15 minutes keeps a fleet
of machines on the same code (the daemon user's PATH must contain paseo):
# ~/.config/systemd/user/paseo-plugin-update.{service,timer} — Linux
# (macOS: the same command in a launchd agent with StartInterval 900)
[Service]
Type=oneshot
ExecStart=%h/.local/bin/paseo plugin update --all --yes
Requirements
Depends on the plugin:
- claude-login — the
claudeCLI (andcursor-agentfor Cursor) on the daemon machine. - agent-router — the providers it should switch between; the chains are configured in the UI.
- obot-connectors — a reachable Obot server with an API key (see
OVERVIEW.md). - chats — nothing extra; sandboxing needs the
agent-jailbubblewrap wrapper. - monokai-pro — nothing.
Secrets are never stored in this repository: the plugins read them from files on the daemon machine
(~/.sky/env, provider settings) or from Paseo's own configuration.
Development
Every top-level directory is one plugin: server and client entry points, shared/ for the contracts
and i18n, paseo-plugin.json for the manifest. The client code is React (React Native Web), the
server code runs inside the daemon.
cd agent-router
npm install
npm run typecheck
The UI is English/Russian and follows the Paseo language setting.
Plugins are trusted code without a sandbox: installing one gives it the same access as the daemon. Read what you install.




