How hackyguru/botato works
Botato is a local-first desktop environment for creating persistent bots, chatting with them individually or in rooms, and letting them work on schedules. The desktop UI sends commands to the Tauri backend, which runs turns through each bot’s chosen engine and streams results back; the backend also owns bot data, tools, and optional computer and voice capabilities. The phone app pairs directly with the desktop and presents its state and actions. Some subsystem links are based on README descriptions because their source was not sampled.
Main entry points: lib.rs Command backend · App.tsx Phone app · main.ts Desktop UI · inference.rs Engine adapters
Components 24
Desktop experience
- Desktop UI
src/main.ts - Command backend
src-tauri/src/lib.rs - Bots and settings
src-tauri/src/lib.rs - Rooms and routines
src-tauri/src/rooms.rs
Bot runtime
- Turn runner
src-tauri/src/lib.rs - Engine adapters
src-tauri/src/inference.rs - Transcript and memory
src-tauri/src/transcript.rs
Bot capabilities
- Connectors and OAuth
src-tauri/src/connectors.rs - MCP tools
src-tauri/src/mcp.rs - MCP client
src-tauri/src/mcp_client.rs - Workspace files
src-tauri/src/files.rs - Bot computer
src-tauri/src/sandbox.rs - Container engine
src-tauri/src/engine.rs - Speech and voice
src-tauri/src/speech.rs - Local speech input
src-tauri/src/hearing.rs - Encrypted backups
src-tauri/src/backup.rs
Phone access
- Phone app
mobile/App.tsx - Phone API
mobile/src/api.ts - Peer transport
mobile/rust/botato-p2p/src/lib.rs - Desktop peer service
src-tauri/src/p2p.rs - Pairing credential storage
mobile/src/storage.ts
Other components
- User
- Model engines
- Phone user
Connections 23
- User → Desktop UI: uses
- Desktop UI → Command backend: invokes commands
- Command backend → Bots and settings: manages bots
- Command backend → Rooms and routines: manages rooms
- Command backend → Turn runner: starts turns
- Turn runner → Engine adapters: runs turn
- Engine adapters → Model engines: invokes engine
- Turn runner → Transcript and memory: reads and records
- Turn runner → Bot computer: uses when enabled
- Turn runner → Workspace files: provides file tools
- Turn runner → MCP tools: serves desktop tools
- Turn runner → MCP client: routes external tools
- MCP client → Connectors and OAuth: uses configured connectors
- Bot computer → Container engine: uses managed engine
- Command backend → Speech and voice: provides speech
- Command backend → Local speech input: provides speech input
- Command backend → Encrypted backups: creates backups
- Phone user → Phone app: uses
- Phone app → Phone API: requests and listens
- Phone app → Pairing credential storage: loads pairing token
- Phone API → Peer transport: sends requests
- Peer transport → Desktop peer service: connects directly
- Desktop peer service → Command backend: forwards desktop actions