How krishna7604/exa works
exa is a self-hosted, multi-tenant personal AI agent, offered as a web client with a server-hosted loop and a CLI with a machine-hosted loop. Users sign in, start or resume chats, and the agent responds using models and available tools; the web app also exposes memory, scheduled tasks, connectors, and settings. Server APIs apply policy and coordinate sessions, persistence, and approvals. The graph combines sampled call evidence with README-documented architecture; paths for unsampled subsystems point only to existing directories, so some links are intentionally unverified.
Main entry points: app.js Web application · agent-loop.ts Agent loop · session.service.ts Session lifecycle · router.js Page router
Components 29
User clients
- Web application
apps/web/public/app.js - Page router
apps/web/public/js/router.js - Web authentication
apps/web/public/js/services/auth.service.js - Web client state
apps/web/public/js/state.js - Chat interface
apps/web/public/js/views/chat.view.js - Live chat events
apps/web/public/js/services/events.service.js - Scheduled tasks UI
apps/web/public/js/views/tasks.view.js - Memory and tools pages
apps/web/public/js/views - CLI entry
apps/cli/src/main.ts - CLI session client
apps/cli/src/session/exa-client.ts
Server API
- HTTP API
apps/server/src/app.ts - API routes
apps/server/src/routes/api.routes.ts - Session endpoints
apps/server/src/controllers/session.controller.ts - Session lifecycle
apps/server/src/services/session.service.ts - Storage policy
apps/server/src/services/storage-mode.helper.ts
Agent runtime
- Server agent runtime
apps/server/src/runtime/server-runtime.ts - Agent loop
packages/core/src/loop/agent-loop.ts - Permission engine
packages/core/src/permission/permission-engine.ts - Built-in tools
packages/tools/src/tools - MCP connectors
packages/tools/src/mcp/mcp.manager.ts
Model routing
- Model router
packages/router/src/routing/exa.router.ts - Provider gateway
packages/router/src/gateway/gateway.ts
State and integrations
- Postgres and local store
packages/store/src/db/db.ts - Session repository
apps/server/src/repositories/session.repository.ts - Memory and task services
apps/server/src/services - Approval coordination
apps/server/src/runtime/approval-broker.ts
Other components
- User
- Model providers
- Remote MCP servers
Connections 35
- User → Web application: uses
README.md - User → CLI entry: runs
README.md - Web application → Page router: routes pages
apps/web/public/app.js - Page router → Web authentication: checks sign-in
apps/web/public/js/router.js - Page router → Chat interface: opens chats
apps/web/public/js/router.js - Web authentication → Web client state: loads identity
apps/web/public/js/services/auth.service.js - Web authentication → Memory and tools pages: loads account
apps/web/public/js/services/auth.service.js - Chat interface → Live chat events: subscribes to events
apps/web/public/js/views/chat.view.js - Live chat events → Web client state: updates chat state
apps/web/public/js/services/events.service.js - Web application → Scheduled tasks UI: offers task page
- Web application → Memory and tools pages: offers memory and tools
apps/web/public/app.js - CLI entry → CLI session client: starts sessions
apps/cli/src/main.ts - Web application → HTTP API: calls API
README.md - CLI session client → HTTP API: syncs with server
README.md - HTTP API → API routes: registers routes
apps/server/src/app.ts - API routes → Session endpoints: routes sessions
apps/server/src/routes/api.routes.ts - Session endpoints → Session lifecycle: delegates
apps/server/src/controllers/session.controller.ts - Session lifecycle → Storage policy: resolves storage
apps/server/src/services/session.service.ts - Session endpoints → Session repository: persists sessions
- Session lifecycle → Server agent runtime: controls server loop
- Session lifecycle → Session repository: loads and stores
- Session repository → Postgres and local store: reads and writes
apps/server/src/repositories/session.repository.ts - Server agent runtime → Agent loop: runs agent loop
README.md - Agent loop → Permission engine: checks actions
README.md - Agent loop → Built-in tools: invokes tools
README.md - Agent loop → Model router: requests models
README.md - Model router → Provider gateway: routes completion
packages/router/src/routing/exa.router.ts - Provider gateway → Model providers: calls providers
README.md - Built-in tools → MCP connectors: loads MCP tools
- MCP connectors → Remote MCP servers: connects remotely
README.md - Agent loop → Approval coordination: requests approval
README.md - Approval coordination → Live chat events: publishes decisions
- Scheduled tasks UI → Memory and task services: manages tasks
- Memory and tools pages → Memory and task services: manages memory
- Memory and task services → Postgres and local store: persists records