How them1n9/perry works
Perry is a self-hosted personal AI assistant: a user messages it through the web dashboard, Telegram, or WhatsApp; a local server routes the conversation to a paired computer’s runner; and the runner invokes the selected coding-agent engine to work on that computer and return a response. Convex-style functions and a local data store support chat, memory, scheduling, connectors, approvals, and traces. The README documents product capabilities not fully evidenced in sampled source; those branches are shown at subsystem level, with links omitted where implementation wiring was not shown.
Main entry points: runtime.ts Function runtime · runner/index.ts Computer runner · routing.ts Conversation routing · server/index.ts Local server
Components 20
User interaction
- Web dashboard
components/dashboard/screens - Telegram / WhatsApp
server - Desktop companion
pet - Web client API
client/backend.ts
Assistant runtime
- Local server
server/index.ts - Function runtime
server/runtime.ts - Computer runner
runner/index.ts - Agent engines
runner/engines - Computer tools
convex/lib/commands.ts
Assistant capabilities
- Conversation routing
convex/lib/routing.ts - Memory and Brain
convex/brain.ts - Schedules and tasks
convex/jobs.ts - Account connectors
convex/composio.ts - Access approvals
convex/approvals.ts - Run traces
convex/codex.ts
Local backend
- Assistant data
convex/schema.ts - Local files
runner/home.ts
Other components
- Owner
- Composio
- Chosen engine
Connections 23
- Owner → Web dashboard: messages
README.md - Owner → Telegram / WhatsApp: messages
README.md - Owner → Desktop companion: speaks to
README.md - Web dashboard → Web client API: calls
- Web client API → Function runtime: requests
client/backend.ts - Telegram / WhatsApp → Local server: delivers messages
server/api.ts - Desktop companion → Local server: uses assistant
- Local server → Function runtime: starts
server/index.ts - Function runtime → Assistant data: reads and writes
- Local server → Computer runner: pairs computer
server/index.ts - Computer runner → Agent engines: runs turns
runner/index.ts - Chosen engine → Agent engines: selects
- Agent engines → Computer tools: uses tools
- Function runtime → Conversation routing: routes conversations
- Conversation routing → Computer runner: dispatches work
runner/index.ts - Computer runner → Local files: works on computer
README.md - Conversation routing → Memory and Brain: uses memory
- Function runtime → Schedules and tasks: schedules jobs
- Conversation routing → Account connectors: reaches accounts
- Account connectors → Composio: connects through
README.md - Function runtime → Access approvals: requests approval
- Computer runner → Run traces: reports traces
runner/index.ts - Function runtime → Assistant data: persists assistant state