ETA is managed as a pnpm workspace with two packages:
eta-desktop— Electron, React, Vite, and Tailwind CSS desktop applicationeta-agent— Node.js and TypeScript agent runtime used by Desktop
pnpm install
pnpm dev:desktop
pnpm dev:agentRun both packages together with:
pnpm devThe Desktop process owns the eta-agent instance. It streams Agent events to the React renderer through the preload API. Desktop reuses pi's user configuration from ~/.pi/agent/settings.json and ~/.pi/agent/auth.json, including defaultProvider and defaultModel. Set PI_CODING_AGENT_DIR if your pi configuration lives elsewhere. Environment variables take precedence:
OPENAI_API_KEY=your-key pnpm dev:desktopYou can select another catalogued provider/model with ETA_AGENT_PROVIDER and ETA_AGENT_MODEL. If no pi default is present, Desktop asks pi-ai to select the first authenticated provider/model:
ETA_AGENT_PROVIDER=anthropic \
ETA_AGENT_MODEL=claude-haiku-4-5 \
ANTHROPIC_API_KEY=your-key \
pnpm dev:desktoppnpm build