Vibeleaderboard
Index / app
Visit github.com
Category
AI Agents
Rank
No. 2723Tools index

Previous survey · No. 2612 ·

Pricing
Open Source
Type
APP
Use case
Coding
Interfaces
Desktop
Latest release
v0.21.0-beta.7
Date

About

A local-first desktop workspace (Electron + Rust host + pi Agent Harness) for running AI coding agents against any local project, with bring-your-own-model support for OpenAI, Anthropic, or OpenAI-compatible/local gateways. It adds a permission layer for reviewing diffs and command output, plus extensibility via Skills, MCP servers, Subagents, and installable plugins.

What it does

A standalone app that gives a coding agent its own home outside any editor or terminal. You open a repository, pick a model, and hand the agent work in one of three modes: act directly, write a plan for approval first, or chase a fixed goal with acceptance criteria. Sessions persist across restarts, can be branched and searched, and can split work across background helpers or full worker sessions you can inspect. The agent loop itself comes from the open pi harness; this project adds the product around it.

Why it's ranked here

The engineering is unusually deliberate for an early preview. Every tool call passes an allow, ask or deny gate. Shell commands run in their own process group, or a kill-on-close job on Windows, so a stopped task takes its children with it. Each extension runs in a separate process that receives a stripped environment without provider keys, and a crashed extension is contained rather than taking down the app. The repository records its design decisions as numbered records and ships dozens of end-to-end test scripts alongside Rust unit tests. Against that, the maintainers still label it Early Preview.

What's good

Model choice is genuinely open: hosted vendors, compatible endpoints, Ollama and LM Studio, with provider, context window, reasoning level and temperature set per model, and a session can switch models mid-stream. Credentials go to the OS keychain, there is no required account or relay, and the app sends no telemetry of its own. It can import existing sessions from Claude Code, Codex, OpenCode and Pi. The extension system reaches past the agent into the desktop itself, with panels, floating widgets, themes, background services and a message bus between extensions.

Tradeoffs

The extension sandbox is weaker than it sounds. The project's own notes say permission checks cover only the host API, not raw Node file or network calls inside an extension process, and that CPU and memory limits are not enforced yet. Declared permissions are still granted automatically at load time. The plugin SDK and devkit are private workspace packages, so building an extension outside a checkout of the repository is not yet supported. Release builds ship no Node or npm, so importing an extension with npm dependencies needs a system npm on the path. The code is LGPL-3.0, not a permissive license.

How to use it well

Pick it if you want one persistent window for agent work across several repositories and several model providers, especially if a local model handles private tasks. Use Plan mode for refactors and risky changes, since extension tools are unavailable there. Install only third-party extensions you would trust to run as ordinary Node code on your machine. It does not replace your editor: it has no IDE integration by design, so keep the editor for hands-on changes and treat this as the place the agent works.

Technical notes+

Two runtimes cooperate. The Electron main process in apps/desktop/electron/main/index.ts wires the renderer, a sidecar agent runtime and a Rust host; crates/host-core/src/main.rs starts a tokio RPC server over a data directory (default ~/.pi-desktop) holding sessions, plugins, scratch and logs, and sweeps orphaned scratch dirs on boot. crates/host-core/src/tools/mod.rs caps bash timeouts between 1s and 6h (60s default), retries transient spawn failures with three short backoff steps (50, 100 and 250 ms), and terminates via killpg or a Windows Job Object. Per docs/adr/0008-plugin-runtime-isolation-target.md, each plugin is forked with utilityProcess.fork, calls pass HOST_API_ALLOWLIST then assertPermission, with timeouts of 30s per command, 110s per tool and 15s per load. The manifest type in packages/plugin-sdk/src/index.ts declares fs scopes and a net domain allowlist where an omitted list means no egress.

Observed

License
LGPL-3.0-or-later
Language
TypeScript (Electron app, pnpm monorepo) plus a Rust host crate
Platforms
macOS, Windows, Linux
Runtime requirement for source builds
Node.js 22.19 or newer, pnpm 10 or newer
Agent kernel
pi agent harness packages from earendil-works
Model providers
OpenAI, Anthropic, OpenAI-compatible APIs, custom gateways, Ollama, LM Studio
Extension packaging
Plugins distributed as .piplug packages or via an in-app marketplace; MCP servers supported
Plugin isolation
One separate process per plugin; permission gating covers the host API, not raw Node APIs
Credential storage
OS keychain; no PI-Desktop telemetry or mandatory account
Tests
Rust unit tests via cargo test plus a large set of end-to-end smoke scripts

Read from README.md, package.json, Cargo.toml, LICENSE, SECURITY.md, docs/plugin-development.md, docs/adr/0008-plugin-runtime-isolation-target.md, docs/adr/0002-use-pi-agent-harness.md, apps/desktop/electron/main/index.ts, packages/agent-runtime/src/index.ts, crates/host-core/src/main.rs, crates/host-core/src/tools/mod.rs, packages/plugin-sdk/src/index.ts.

What it can do

  • Run AI coding agents against local project repositories

    Local project files → Agent-generated code changes

  • Connect to bring-your-own LLM providers (OpenAI, Anthropic, or OpenAI-compatible/local gateways)

    API credentials/endpoint → Configured model connection

  • Review and approve diffs and command output before execution

    Proposed code diff or command → Approved or rejected change

  • Extend agent functionality with Skills

    Skill definition → Added agent capability

  • Connect to MCP servers for extended tool access

    MCP server configuration → Additional agent tools

  • Delegate tasks to Subagents

    Task definition → Subagent execution result

  • Install plugins to extend the workspace

    Plugin package → Installed extension

Tags

coding-agentdesktop-applocal-firstmcpelectronrustplugin

Tech Stack

Node.jsRust

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.