Architecture
Technical architecture of Agent Observer across desktop runtime, renderer, automation engines, and docs web surface.
Architecture
Agent Observer is primarily an Electron desktop application with a separate Next.js documentation/product web surface.
System Layers
Desktop Runtime (Electron Main)
Responsibilities:
- lifecycle and window management
- IPC handler registration
- integration with local process/runtime boundaries
- persistent local state for scheduler and todo runner
Key modules:
src/main/index.tssrc/main/scheduler.tssrc/main/todo-runner.tssrc/main/claude-session.ts
Preload Bridge
Provides typed, constrained renderer access to main-process functionality.
Key module:
src/preload/index.ts
Renderer (React)
Responsibilities:
- panel layout and interaction state
- settings UI for schedules and todo runner
- status presentation and operator controls
Key modules:
src/renderer/components/SettingsPanel.tsxsrc/renderer/types.ts
Shared Contracts
Shared typing for renderer/preload interfaces:
src/shared/electron-api.ts
Web Docs Surface (Next.js)
Separate web app for docs/content:
web/src/app/*web/content/docs/*
Automation Engines
Scheduler
- Time-based recurring task execution.
- Cron parsing and next-run calculation in main process.
- Runtime status persisted to local JSON.
State file:
~/.agent-observer/schedules.json
Todo Runner
- Sequential checklist execution until completion or blocked state.
- One todo item per runner invocation.
- Retry and pause semantics built into orchestration loop.
State file:
~/.agent-observer/todo-runner.json
Install Telemetry Beacon
- Generates a stable local
installationIdon first launch. - Sends one anonymous first-launch beacon using a SHA-256 hash of that ID.
- Retries with bounded exponential backoff and stops after max attempts.
State file:
~/.agent-observer/install-beacon.json
Environment override:
AGENT_OBSERVER_INSTALL_BEACON_URL
Data/Control Flow
- User configures automation in Settings.
- Renderer calls preload APIs.
- Preload forwards to main IPC handlers.
- Main engine mutates state and executes work.
- Main broadcasts update events.
- Renderer reloads lists and updates status UI.
Design Constraints
- Local filesystem and command execution boundaries must remain explicit.
- Long-running work must be resumable.
- UI status should be derived from persisted runtime state where possible.
- Docs and implementation contracts must stay aligned.
Extension Direction
High-value extension points:
- richer run history and artifact storage
- policy controls for runner commands
- stronger contract validation for runner outputs
- richer event stream for observability dashboards