{"slug": "saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review", "title": "Saying 'Hi' to This Agent Daemon Cost $0.29 — A Rival's Hands-On Paseo Review", "summary": "A developer who builds a competing agent daemon, agentproto, tested Paseo v0.1.107 on macOS and found that saying \"hi\" cost $0.29 due to the default Claude Opus model. The review, conducted entirely from the terminal, highlights Paseo's smooth onboarding and inspect feature but warns that every run creates a fresh workspace and the default model is expensive.", "body_md": "Disclosure up front:I build[agentproto], which\n\noverlaps with Paseo in the \"daemon that runs coding agents\" space. Everything\n\nbelow is the verbatim session log from installing and exercising Paseo\n\nv0.1.107 on macOS (Node 22) on 2026-07-13 — commands, outputs, and costs are\n\nreal. Where Paseo is better, I say so plainly. Corrections welcome — file an\n\nissue and I'll amend.\n\nAlmost every agent-tool review you read this year was written from the README.\n\nYou can tell: the features arrive in the order the docs list them, and nobody\n\never mentions the bill.\n\nThis one was written from the terminal. I installed Paseo, ran real agents\n\nthrough it, made one hit its permission wall on purpose, and read the invoice.\n\nThe first thing it told me: saying *\"hi\"* costs twenty-nine cents.\n\nAnd here's the part that should make you trust the rest — **I build a Paseo\ncompetitor.** A rival's praise is the only kind a README can't buy.\n\nThe one idea, if you remember nothing else:\n\nA README is the tool's sales pitch. The terminal is its confession. So I\n\nreviewed Paseo from the terminal.\n\nPaseo is a **local daemon** (`~/.paseo`\n\n, listening on `127.0.0.1:6767`\n\n) that\n\nwraps the coding-agent CLIs you already have — Claude Code, Codex, OpenCode,\n\npi — behind one lifecycle API. It speaks to them via the\n\n[Agent Client Protocol](https://agentclientprotocol.com) (ACP, the protocol Zed\n\nintroduced), so a \"Paseo agent\" is really a provider session — a Claude Code\n\nsession, say — that the daemon owns and multiplexes.\n\nThe headline feature is your phone. The daemon holds an outbound WebSocket to\n\n`wss://relay.paseo.sh`\n\n, and the mobile/web app reaches your machine through that\n\nrelay after a QR pairing (`paseo daemon pair`\n\n) — no inbound port, no tailscale.\n\n10.3k GitHub stars (as of 2026-07-13), AGPL-3.0, and, credit where it's due, the\n\nonboarding is genuinely smooth.\n\n``` bash\n$ paseo status\nLocal Daemon      running\nListen            127.0.0.1:6767\nRelay             wss://relay.paseo.sh:443\nProviders\n  Claude          available (daemon)\n  Codex           available (daemon)\n  OpenCode        available (daemon)\n  pi              available (daemon)\n```\n\n**That four-provider list is the whole pitch in one screen: one daemon, one\nlifecycle, four agent brands underneath it.** Which is a real thing to want. So\n\n``` bash\n$ paseo run \"hi\" --provider claude\nCreated workspace wks_1043f3c7… \nAGENT ID   STATUS     PROVIDER  TITLE\na722bba…   completed  claude    hi\n```\n\nIt worked on the first try. It also cost more than I expected for one syllable,\n\nand it quietly created a workspace I didn't ask for. Two gotchas the quickstart\n\nwon't warn you about, and both cost you real money if you skim past them.\n\nGotcha 1 — the default Claude model is Opus.My`\"hi\"`\n\n— one word in,\n\neighteen tokens out — cost$0.29.`paseo inspect <id>`\n\nshows per-agent\n\nusage down to the cent, which is a genuinely nice touch. For experiments, pass\n\n`--provider claude --model claude-haiku-4-5`\n\nor you're benchmarking on the\n\npriciest model in the house.\n\nGotcha 2 — everyNotice the`run`\n\nmints a fresh workspace.\n\n`Created workspace wks_1043f3c7…`\n\non a one-word prompt. Reuse one with\n\n`--workspace <id>`\n\nor`PASEO_WORKSPACE_ID`\n\n, or your workspace list silently\n\npiles up run after run.\n\n`paseo inspect`\n\nis where the daemon earns trust. You see the wrapped session's\n\nmodes — for Claude they're literally Claude Code's permission modes (`Always`\n\n,\n\nAsk`Accept File Edits`\n\n, `Plan Mode`\n\n, `Bypass`\n\n) — plus token usage, cost,\n\npending permissions, worktree binding, and a parent-agent field. Nothing is\n\nhidden behind the wrapper. Good. Now for the feature the whole thing exists to\n\nsell.\n\nThe permission relay is Paseo's real product, so I didn't take the README's word\n\nfor it — I set an agent up to fail against it. Launch in `default`\n\n(always-ask)\n\nmode with a task that *must* write a file, and detach:\n\n``` bash\n$ paseo run \"Create a file named hello.txt containing exactly the line: paseo test ok\" \\\n    --provider claude --model claude-haiku-4-5 --mode default -d\n```\n\nEight seconds later the agent is frozen mid-task, waiting on a human it can't\n\nsee. From a second terminal, I answered as that human:\n\n``` bash\n$ paseo permit ls\nAGENT     REQ_ID    TOOL   DESCRIPTION\nb402ffb   permissi  Write  -\n\n$ paseo permit allow b402ffb\nREQUEST ID  AGENT    TOOL   RESULT\npermissi    b402ffb  Write  allowed\n\n$ paseo logs b402ffb\nDone. Created hello.txt with the content \"paseo test ok\".\n```\n\nThe same request lands as a push notification on the paired phone, with\n\napprove/deny buttons. **This works exactly as advertised — the permission prompt\nescapes the terminal the agent lives in, and you can answer it from the couch.**\n\nWhat the relay is, in ladder terms.An agent freezes on a`Write`\n\n, the\n\nrequest surfaces in`paseo permit ls`\n\n(and on your phone), you tap allow, it\n\nfinishes. On the[supervision ladder], that's a\n\npolishedL2 — permission relay: it moves the human decision to a better\n\nsurface. It does not remove the human. Same person, better couch — which is\n\nthe ceiling of L2, not a knock on Paseo's execution of it.\n\nThat distinction — better surface vs. fewer humans — is the whole review, and\n\nit's worth being fair about how much surface Paseo actually ships.\n\nThis is where I expected a thin wrapper and found a real product. The CLI is\n\nbroad, and several of these I'd happily use:\n\n| Surface | What it does |\n|---|---|\n`paseo loop` |\nIterative worker loops (the \"Ralph\" pattern: same prompt, N iterations, stop condition) |\n`paseo schedule` |\nCron-style recurring runs, with pause/resume and run logs |\n`paseo chat` |\nNamed rooms agents post to / read from — lightweight agent-to-agent coordination |\n`paseo worktree` |\nManaged git worktrees; `run --worktree <name>` isolates an agent per branch |\n`paseo terminal` |\nWorkspace terminals you create, send keys to, and capture — from the phone too |\n`paseo import` |\nAdopt an existing Claude Code / Codex session as a Paseo agent |\n`--output-schema` |\nForce an agent's final answer to match a JSON schema |\n\nTwo of these are quietly excellent. `--output-schema`\n\ngives you structured\n\noutput from an *interactive* coding agent, which is rare and genuinely useful.\n\nAnd `import`\n\nlets you bring a session you started in a plain terminal under\n\ndaemon management *after the fact* — a thoughtful escape hatch most wrappers\n\nskip.\n\n**On steering — running, watching, and approving agents from anywhere — Paseo\nis best-in-class, and I'm saying that as someone who ships a competitor.** The\n\nThree limits matter if you're evaluating Paseo seriously — and none of them are\n\nknocks on its polish. They're about a different job than the one it's built for.\n\n**1. Supervision means you, faster — not you, removed.** The relay moves the\n\nhuman decision to your pocket; it doesn't take the human out of the loop. There\n\nis no policy engine that fires *at the agent's turn-end* — nothing that says\n\n\"when the agent claims done, run lint + tests, have a second model try to refute\n\nthe diff, and stage the commit until a human acks.\" Schedules and loops re-run\n\nprompts; they don't verify outcomes. That's the jump from L2 to\n\n[L3/L4 on the ladder](https://dev.to/agentiknet/your-agent-says-the-tests-passed-it-didnt-run-them-15j), and it's the jump Paseo\n\ndoesn't make.\n\nThe critique isn't mine — it's from the reviewers.From a 2026 cross-device\n\nPaseo review:a supervision layer makes it easier to watch and review agents,A nicer approval surface still hands\n\nbut it cannot improve a model that produces bad edits or fix a misdiagnosed\n\nbottleneck.youthe same diff to judge.\n\n**2. Your tools don't ride along.** Paseo injects its own control tools into the\n\nagents it runs — that's how permit/chat/terminal reach the model — but there's\n\nno mechanism to register *your* tool once and have every agent (Claude, Codex,\n\nOpenCode) see it. Each provider keeps its own MCP config; the daemon isn't a\n\ntool bus. If you want one capability visible to every agent brand, that's still\n\nmanual, per-provider labor with your name on it.\n\n**3. The daemon's own MCP surface is off by default.** My first probe of\n\n`127.0.0.1:6767`\n\nreturned 404s on the obvious MCP paths — because the MCP server\n\nis config-gated. Set `daemon.mcp.enabled`\n\nin `~/.paseo/config.json`\n\nand the\n\ndaemon exposes its control surface (agent lifecycle, terminals, schedules,\n\nworktrees, permission handling, voice) as MCP tools, so a Claude Desktop or\n\nCodex session *can* drive Paseo.\n\nCredit, then the caveat.That flag turns Paseo into a real\n\ndrivable-from-agents surface — a legitimately nice property. But what it\n\nexposes is Paseo'sowncontrol tools, not a bus for distributingyour\n\ntools into the agents it runs. Point 2 still stands.\n\nNone of that makes Paseo worse at its job. It makes it a different rung than the\n\none I build for — which is the fair way to end a review a competitor wrote.\n\n**Use Paseo if your bottleneck is *being physically present.*** You run two to\n\nfive Claude Code / Codex sessions, permission prompts are what shreds your day,\n\nand you want to approve them from the couch — with worktrees, schedules,\n\nstructured output, and a phone app that, honestly, is nicer than most. It's\n\nfree, open source, self-hosted, and the polish is not a facade. On steering, it\n\nbeats us.\n\n**Look further if your bottleneck is *trust at scale.*** You want the \"done\"\n\nclaim checked by something other than the agent that made it, commits staged\n\nbehind verification, one tool you wrote visible to every agent brand, or a gate\n\nthat survives your laptop closing. That's the layer I build agentproto for — and\n\nthe two aren't rivals on the same repo: nothing stops a Paseo-steered session\n\nand an externally-gated one from coexisting.\n\nThe daemon tax, named fairly.Adding an orchestration daemon means a failed\n\nrun can now originate in the provider, the daemon, the client,orthe relay —\n\nthe debugging and threat surface genuinely grows. That's true of Paseo and true\n\nof agentproto; it's the cost of the shape, not of either tool. (Also flagged\n\nin VibeCodingHub's Paseo review.)\n\nIf you're just meeting this series, the map is\n\n[You can't parallelize the trust](https://dev.to/agentiknet/you-can-parallelize-the-typing-you-cant-parallelize-the-trust-2fkd)\n\n(why steering more agents doesn't scale), the\n\n[supervision ladder](https://dev.to/agentiknet/your-agent-says-the-tests-passed-it-didnt-run-them-15j) (the five rungs Paseo sits low\n\non, deliberately and well), and [routing by cost](https://dev.to/agentiknet/cheaper-per-token-is-not-cheaper-per-outcome-3b9b) (why\n\nthe checking layer has to reach cheap models Paseo doesn't gate). Paseo is an\n\nexcellent answer to *\"how do I steer agents from anywhere.\"* It just isn't\n\ntrying to answer *\"what — other than me — decides my agent is done.\"*\n\nA README would never tell you that. Its terminal did, in two commands and\n\ntwenty-nine cents.\n\n*If I've mis-read where Paseo stops, or a flag I missed already does the thing I\nsay it can't, tell me exactly which — I'll re-run it and fix the piece.*\n\nTen pieces, one argument. Start anywhere; each one cross-links the rest.\n\n| Piece | The one idea | |\n|---|---|---|\n| 1 |\n|\n\n*Written by the maintainer of agentproto (Apache-2.0, source). Same contract as our /compare page — dated facts, named strengths, corrections by issue. Got something wrong? File an issue.*\n\n*Building agentproto in the open — follow @theagentproto and @agentik_ai on X.*", "url": "https://wpnews.pro/news/saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review", "canonical_source": "https://dev.to/agentiknet/saying-hi-to-this-agent-daemon-cost-029-a-rivals-hands-on-paseo-review-e7i", "published_at": "2026-07-14 01:36:27+00:00", "updated_at": "2026-07-14 01:57:35.499142+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["Paseo", "Claude Code", "Codex", "OpenCode", "pi", "Agent Client Protocol", "agentproto"], "alternates": {"html": "https://wpnews.pro/news/saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review", "markdown": "https://wpnews.pro/news/saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review.md", "text": "https://wpnews.pro/news/saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review.txt", "jsonld": "https://wpnews.pro/news/saying-hi-to-this-agent-daemon-cost-0-29-a-rival-s-hands-on-paseo-review.jsonld"}}