2.7 KiB
description, icon
| description | icon |
|---|---|
| Architecture of the Tauri desktop host — process model, window management, sidecar. | code-branch |
Tauri shell architecture (app/src-tauri/)
Overview
The app/src-tauri crate (Rust package OpenHuman, binary OpenHuman) is a desktop-only host. It embeds the React UI, registers plugins (deep link, opener, OS, notifications, autostart, updater), manages the main window and tray, and relays JSON-RPC to the separately built openhuman core binary.
Non-desktop targets fail at compile time (compile_error! in lib.rs).
Directory layout (actual)
app/src-tauri/src/
├── lib.rs # `run()`, tray/menu actions, plugins, `generate_handler!`, core startup
├── main.rs # Binary entry
├── core_process.rs # CoreProcessHandle, spawn/monitor openhuman sidecar
├── core_rpc.rs # HTTP client to core JSON-RPC
├── commands/
│ ├── mod.rs # Re-exports
│ ├── core_relay.rs # `core_rpc_relay`, service-managed core bootstrap
│ ├── openhuman.rs # Daemon host config, systemd-style service helpers
│ └── window.rs # show/hide/minimize/close window
└── utils/
├── mod.rs
└── dev_paths.rs # Resolve bundled AI prompts paths
There is no src-tauri/src/services/session_service.rs in this tree; session semantics are handled in the web layer + backend + core as applicable.
Data flow: UI → core
React (invoke)
→ core_rpc_relay { method, params, serviceManaged? }
→ core_rpc::call HTTP POST to OPENHUMAN_CORE_RPC_URL
→ openhuman binary (src/bin/openhuman.rs → core_server)
CoreProcessHandle in core_process.rs starts or waits for the sidecar; commands/core_relay.rs optionally ensures a service-managed core is running before relaying.
Window and tray behavior
- The shell creates a tray icon at startup and wires actions to open the main window or quit.
- In daemon mode (
daemon/--daemon), the main window is hidden on launch and can be reopened from tray actions. - On macOS
RunEvent::Reopenalso restores and focuses the main window. - Windows and Linux use the same tray actions (
Open OpenHuman,Quit), with desktop-environment-specific tray rendering differences on some Linux setups.
Bundled resources
tauri.conf.json bundles ../../skills/skills and ../../src/openhuman/agent/prompts so skills and prompt markdown ship with the app.
Related
- IPC surface: Commands
- HTTP bridge: Core bridge
- Rust domains (implementation): repo root
src/openhuman/,src/core_server/