The development environment
built for coding agents

Run any coding agent from your phone, desktop, or terminal. Self-hosted, multi-provider, open source.

Sessions
A
acme/returns-app
main
+247-15
feat/dashboard
#142 · Open
P
acme/payments
main
fix/stripe-webhook
+38-4
#89 · Merged
I
acme/infra
main
feat/k8s-autoscale
+91-3
D
acme/design-system
main
MacBook Pro
mainacme/returns-app
Commit
+247-15
Orchestrator
Implement
Review
Build me an internal dashboard for tracking customer returns

I'll break this down into planning and implementation.

Run plan-technicalcodex · plan-technical
Run plan-designclaude · plan-design
Wait for agentsplan-technical plan-design

Got the plans. Spinning up Codex for implementation.

Run implementcodex · 12 files changed

Implementation done. Requesting review from Claude.

Run reviewclaude · no issues found

All tasks complete. Dashboard is ready.

Message the agent, tag @files, or use /commands and /skills
Opus 4.6
npm run dev
$ npm run dev
> next dev --turbopack
▲ Next.js 15.3.1 (Turbopack)
- Local: http://localhost:3000
✓ Starting...
✓ Ready in 1.2s
○ Compiling /dashboard ...
✓ Compiled /dashboard in 340ms
○ Compiling /api/returns ...
✓ Compiled /api/returns in 120ms
Changes
Files
Uncommitted
dashboard.tsx src/pagesNew
+16-0
1
import { useState } from "react"
2
import { ReturnTable } from "./components"
3
4
export function Dashboard() {
5
const [returns, setReturns] = useState([])
6
const [filter, setFilter] = useState("all")
7
8
return (
9
<main className="min-h-screen p-8">
10
<h1>Customer Returns</h1>
11
<FilterBar value={filter} onChange={setFilter} />
12
<ReturnTable data={returns} />
13
<StatusChart data={returns} />
14
</main>
15
)
16
}
return-table.tsx src/components
+42-8
filter-bar.tsx src/components
+28-3
status-chart.tsx src/componentsNew
+19-0
returns.ts src/api
+12-5
index.tsx src/pages
+6-2

When you want to step away from your desk,
you can.

The native mobile app has full feature parity with desktop.

Paseo sessions list
Paseo agent chat
Paseo diff view

Use the best agent for the job

Run multiple providers from a single interface. Paseo runs the native agent harness as you'd normally run it, with your skills, config and MCP servers intact.

Claude Code
Codex
OpenCode

Your agents, every surface

Run agents on your laptop, a VM, or a dev server. Control them from any device with a direct connection or an E2E encrypted relay.

Desktop
Web
Mobile
CLI

E2E Encrypted Relay

or

Direct Connection

MacBook Pro
Hetzner VM
Dev server

Keyboard-first

Every action has a shortcut. Panels, splits, agents - all from the keyboard.

Switch panels
1-9
Split vertical
D
Split horizontal
ShiftD
Close panel
W
New agent
N
Command palette
K

Local voice

Fully local voice stack. Speech-to-text and text-to-speech run entirely on your machine, nothing leaves your network.

Fully scriptable

Everything you can do in the app, you can do from the terminal.

paseo run "implement user authentication"
paseo run --provider codex --worktree feature-x "implement feature X"
paseo run --host devbox:6767 "run the full test suite"

paseo ls                           # list running agents
paseo attach abc123                # stream live output
paseo send abc123 "also add tests" # follow-up task
Full CLI reference

FAQ

+Is this free?
Yes. Paseo is free and open source. You need Claude Code, Codex, or OpenCode installed with your own credentials. Voice is local-first by default and can optionally use OpenAI speech providers if you configure them.
+Does my code leave my machine?
Paseo doesn't send your code anywhere. Agents run locally and talk to their own APIs as they normally would. For remote access, you can use the optional end-to-end encrypted relay, connect directly over your local network, or use your own tunnel.
+What agents does it support?
Claude Code, Codex, and OpenCode. Each agent runs as its own process using its own CLI. Paseo doesn't modify or wrap their behavior.
+Do I need the desktop app?
No. You can run the daemon headless with npm install -g @getpaseo/cli && paseo and use the CLI, web app, or mobile app to connect. The desktop app just bundles the daemon with a UI.
+How does voice work?
Voice runs locally on your device by default. You talk, the app transcribes and sends it to your agent as text. Optionally, you can configure OpenAI speech providers for higher-quality transcription and text-to-speech. See the voice docs.
+Can I connect from outside my network?
Yes. You can use the hosted relay (end-to-end encrypted, Paseo can't read your traffic), set up your own tunnel (Tailscale, Cloudflare Tunnel, etc.), or expose the daemon port directly. See configuration.
+Do I need git or GitHub?
No. Paseo works in any directory. Worktrees are optional and only relevant if you use git. You can run agents anywhere you'd normally work.
+Can I get banned for using Paseo?

We can't make promises on behalf of providers.

That said, Paseo launches the official first-party CLIs (Claude Code, Codex, OpenCode) as subprocesses. It doesn't extract tokens or call inference APIs directly. From the provider's perspective, usage through Paseo is indistinguishable from running the CLI yourself.

I've been using Paseo with all providers for months without issue.

+How do worktrees work?
When you launch an agent with the worktree option (from the app, desktop, or CLI), Paseo creates a git worktree and runs the agent inside it. The agent works on an isolated branch without touching your main working directory. See the worktrees docs.

I built Paseo because I wanted better tools for coding agents on my own setup. It's an independent open source project, built around freedom of choice and real workflows. If you like what I'm building, consider becoming a supporter.

- Mo