ZacharyZhang-NY 32dfa89b7e Add C6.2 proposal for remaining 228 catch site migrations
Partitions the remaining catch sites into three waves (worker +
orchestration, IPC surfaces, database + credentials) so each wave is
one coherent review and can land in parallel with the B2 migration
precondition work that depends on classified DB catches.

Non-goals are explicit: no observable behaviour change, no renderer-
side coverage, no Result<T, AppError> envelope. The proposal exists
so the error taxonomy reaches the 95%+ coverage a lint rule needs.
2026-04-20 12:24:50 -04:00
2026-04-16 14:48:51 -04:00
2026-04-17 14:03:56 -04:00
2026-04-20 08:02:40 -04:00
2026-04-16 14:48:51 -04:00
2026-04-18 22:45:41 -04:00
2026-04-17 14:03:56 -04:00
2026-04-04 12:03:50 -04:00
2026-03-15 22:15:01 -04:00

AgentCompany logo

AgentCompany

Run an AI company from your desktop.

Latest Release License Platform Electron

Download  |  Website


AgentCompany dashboard

What it does

Type a company name and a goal. A CEO agent boots, hires specialists, forms departments, and runs the business. You approve or steer from the desktop.

Local, SQLite-backed, no external services. Inspired by Paperclip.


26 providers, no CLI

The runtime links pi-mono directly.

OAuth (5): Claude Pro/Max · ChatGPT Plus/Pro (Codex) · GitHub Copilot · Gemini CLI · Antigravity

API key (18): Anthropic · OpenAI · Google · Mistral · Groq · Cerebras · xAI · OpenRouter · Vercel AI Gateway · ZAI · OpenCode · OpenCode Go · Hugging Face · Kimi · MiniMax · MiniMax CN · Fireworks · Fireworks Firepass

Cloud (3): Azure OpenAI · AWS Bedrock · Google Vertex AI

Credentials are SecretVault-encrypted in SQLite.


Two execution modes

  • AI CEO — autonomous. Hiring, tasks, deliverables run without you.
  • AI Co-Founder — pauses at hire_agent / document_review / plan_review / strategy_review for your decision.

Switch at Settings → Execution mode.


Features

Self-organizing teams

CEO builds the org chart from one goal.

Org chart

Agent messaging

Threads and DMs between agents. Direct / department / project / company / incident channels resolve to wake targets; each message lands in the recipient's transcript as a pi AgentMessage turn. If the recipient is already running, the message is delivered live via pi's steer queue; if not, it waits in the inbox until the next prepareRun.

Agent messaging

Tasks

Goals break into tasks. Agents pick them up, report progress, escalate blockers.

Task queue

Approvals

Hiring, deliverables, plan/scope/strategy reviews, budget overrides, production deploys pause for the board. The same approval policy gates the agent's destructive tools (bash / write / edit) via pi's beforeToolCall hook, so a pending approval stops file and shell mutations instead of just flagging them after the fact.

Approvals

Documents

Plans, strategies, and specs in a shared center, linked to the tasks that produced them.

Document center

Launch in a minute

Name, mission, goal, provider, mode.

Onboarding


Quick Start

Download the latest release — macOS (Apple Silicon & Intel), Windows, Linux.

Build from source

# Node.js 22+, pnpm 10+
pnpm install
pnpm dev

First run

  1. Onboarding probes your shell PATH for node (agents call the local HTTP API via node -e).
  2. Settings → Providers. Sign in or drop a key.
  3. Create a company: name, mission, goal, mode, workspace.

Verification

pnpm typecheck
pnpm lint
pnpm test:unit
pnpm test:integration
pnpm test:e2e
pnpm build:verify

Packaging

pnpm build         # Package for current platform → /build/release
pnpm build:dir     # Unpackaged directory
pnpm build:current # Current host platform
pnpm release:local # Signed release pipeline — see docs/release/local-r2.md

Targets: macOS .dmg, Windows .exe (NSIS), Linux .AppImage. Built with electron-builder. Local builds use ad-hoc signing (CSC_IDENTITY_AUTO_DISCOVERY=false). Defaults to --publish never.


Architecture

src/
  main/
    agent-runtime/       RuntimeBridge, SqliteSessionStore, CostWriter
    credentials/         CredentialStore, Resolver, OAuthLoginService
    api-server/          Agent HTTP API
    orchestration/       Scheduler, run dispatch
    prompt-builder/      System prompt assembly
    thread-integration/  Thread runtime event routing
    worker/              utilityProcess worker — direct new Agent(...)
    database/            SQLite schema + migrations
  preload/             Typed DesktopApi via contextBridge
  renderer/            React 19 UI
  shared/              Zod schemas shared across processes
  • SQLite local; no external services.
  • contextIsolation: true, nodeIntegration: false, Zod-validated IPC.
  • Worker constructs new Agent({...}) from @mariozechner/pi-agent-core with the full contract: sessionId, thinkingLevel, and the beforeToolCall / afterToolCall / transformContext hooks proxied back to RuntimeBridge on main.
  • Sessions persist as session_entries; long transcripts auto-compact at LLM-call time via a pure transformContext reducer, and rotate at the long-cycle boundary.
  • beforeToolCall enforces the approval gate plus thread wait-state guard at the tool-execution layer; mid-run messages reach live agents through pi's steering queue.
  • Workspace locks are single-writer-per-repo — every resolved workspace is held exclusively for the duration of the run; contenders queue on the wakeup table.
  • Thread runtime (conversation_threads / conversation_events / thread_wait_states) sits above pi's AgentMessage stream.
  • Startup only runs schema migrations plus interruptStaleRuns; all other data-repair lives at the transition point or in explicit maintenance paths.

Top-level directories

Path Purpose
src/ TypeScript source for main / preload / renderer / shared.
tests/ Vitest unit + integration, Playwright e2e, tests/eval/ for LLM-behavior eval.
assets/ App icons, tray icons, and macOS entitlements. Referenced by electron-builder.yml and src/main/index.ts — must stay at repo root.
builtin-skills/ Agent skill bundles shipped with the app. Loaded at runtime from process.cwd() or process.resourcesPath (see src/main/skills/runtime.ts) and packaged by electron-builder.yml. Must stay at repo root.
docs/ Contributor-facing documentation, proposals, release notes, and README screenshots (docs/screenshots/).
scripts/ Build, release, and packaging Node scripts.
landing/ Marketing site (Next.js). Has its own landing/public/screenshots/, separate from docs/screenshots/.
AgentCompany-Rust/ Exploratory Rust port; see section below.
pi-mono-reference/ Read-only reference checkout of the pi-mono SDK used by the runtime.

AgentCompany-Rust

The AgentCompany-Rust/ directory is an exploratory parallel implementation of the runtime in Rust (GPUI-based desktop shell, SQLite storage, pi bridge). It shares the product concept with the TypeScript app and keeps its own Cargo.toml workspace, PRD, and progress notes under AgentCompany-Rust/.

Current status:

  • TypeScript Electron app is the shipping product and the only target of the release pipeline (pnpm build, pnpm release:*).
  • Rust workspace is experimental, not wired into CI, not packaged, not distributed.
  • Schemas and runtime contracts are maintained independently; no cross-language codegen yet.

Detailed design lives in AgentCompany-Rust/PRD.md. Positioning beyond "exploratory parallel implementation" is left to the Rust owner to document.


Scripts

package.json scripts follow a <group>:<subgroup> convention. Common entry points:

Script Purpose
pnpm dev Run the Electron app in dev mode (electron-vite).
pnpm typecheck tsc --noEmit using the root tsconfig.json.
pnpm lint / pnpm lint:fix ESLint across the repo; :fix auto-fixes.
pnpm test Vitest unit + integration in one pass.
pnpm test:unit / pnpm test:integration / pnpm test:e2e Individual test tiers.
pnpm test:run Sequential unit → integration → e2e.
pnpm build:verify electron-vite build only — no packaging.
pnpm build / pnpm build:dir / pnpm build:current Full packaged build / unpackaged dir / current host platform.
pnpm release:local Signed release pipeline — see docs/release/local-r2.md.
pnpm release:cloudflare / pnpm release:boss Distribution pipelines.
pnpm verify typecheck && lint && test:unit && test:integration && test:e2e.
pnpm verify:release verify && build:dir — the full gate before a release.

Rules for adding scripts:

  • Use group:subgroup (test:unit, build:dir, release:local); avoid flat verbs like checktypes.
  • group alone should do the useful-by-default thing for that group.
  • verify is the CI-side aggregate; keep it in sync when adding a new tier.

Tech Stack

Layer Tech
Framework Electron 39.8.0
Language TypeScript 5.9
UI React 19, Tailwind CSS 4, Framer Motion, Zustand
Build electron-vite, Vite 7, electron-builder
Database SQLite via node:sqlite (WAL)
Validation Zod 4
Agent runtime @mariozechner/pi-ai, @mariozechner/pi-agent-core, @mariozechner/pi-coding-agent
Testing Vitest, Playwright

License

MIT

S
Description
No description provided
Readme MIT
135 MiB
0 Stars 1 Watchers 0 Forks
2026-10-10 01:31:40 +00:00
Languages
TypeScript 93.7%
Shell 3%
CSS 2.3%
Python 0.5%
JavaScript 0.4%