How sarajo/circe works
Circe adopts a local Hermes fleet, guides the user through choosing agents and identities, then opens themed desktop tiles for ongoing conversations. The main process coordinates onboarding, Hermes profile changes, and tile lifecycles; renderer windows communicate through preload bridges. Tiles support conversation tabs and handoffs, context monitoring, image prompts, and tool approvals. The README documents avatar generation, orchestrator-skill installation, and fleet watching; source excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: tiles.ts Tile lifecycle · real.ts Hermes runtime · wizard.ts Onboarding flow · index.ts App coordinator
Components 22
Onboarding and identity
- Fleet discovery
src/main/fleet.ts - Onboarding flow
src/main/wizard.ts - Wizard screens
src/renderer/wizard/main.ts - Wizard bridge
src/preload/wizard.ts - Identity derivation
src/main/derive.ts - Fandom lookup
src/main/fandom.ts - Portrait generation
src/main/generatedAvatar.ts - Coordinator skill
src/main/orchestrator/skill.ts
Desktop runtime
- App coordinator
src/main/index.ts - Window manager
src/main/windows.ts
Agent tiles
- Tile lifecycle
src/main/tiles.ts - Tile interface
src/renderer/tile/main.ts - Tile bridge
src/preload/tile.ts - Session restore
src/main/restore.ts - Tab persistence
src/main/tileState.ts - Agent protocol
src/main/acp.ts - Tile preferences
src/main/tileState.ts
Hermes integration
- Hermes runtime
src/main/hermes/real.ts - Hermes paths
src/main/hermes/runtime.ts
Other components
- User
- Hermes CLI
- Model provider
Connections 31
- User → Wizard screens: chooses setup
- Wizard screens → Wizard bridge: sends actions
- Wizard bridge → Onboarding flow: dispatches IPC
- App coordinator → Window manager: creates windows
- App coordinator → Onboarding flow: starts onboarding
- App coordinator → Fleet discovery: lists profiles
- Fleet discovery → Hermes runtime: queries profiles
- Onboarding flow → Hermes runtime: checks and updates
- Onboarding flow → Identity derivation: derives identities
- Identity derivation → Fandom lookup: looks up references
- Onboarding flow → Portrait generation: requests portraits
- Portrait generation → Hermes runtime: generates images
- Onboarding flow → Coordinator skill: installs skill
- Coordinator skill → Hermes runtime: writes profile files
- Hermes runtime → Hermes paths: resolves home paths
- Hermes runtime → Hermes CLI: runs commands
- Hermes CLI → Model provider: uses configured model
- App coordinator → Tile lifecycle: opens fleet tiles
- Tile lifecycle → Window manager: creates tile windows
- Tile lifecycle → Hermes runtime: loads profile data
- Tile lifecycle → Session restore: restores conversations
- Tile lifecycle → Tab persistence: reads and writes tabs
- Tab persistence → Tile preferences: persists state
- Tile lifecycle → Agent protocol: manages agent sessions
- Agent protocol → Hermes runtime: connects to runtime
- Tile interface → Tile bridge: sends prompts
- Tile bridge → Tile lifecycle: dispatches tile actions
- Tile lifecycle → Tile bridge: sends updates
- Tile bridge → Tile interface: delivers events
- User → Tile interface: chats and approves
- Tile interface → Agent protocol: renders agent updates