DocumentationArchitecture
The system at a glance
One application protocol, durable execution, and clear boundaries between presentation and authority.
On this page
The main componentsCommands and subscriptionsThe three forms of executionWhere the boundaries matterImplementation referenceImpo separates the user's interface from the lifetime of their work. Clients present conversations and collect permissions. The API accepts account-owned commands. Workers execute them through a managed agent runtime and persist enough state to recover.
The main components#
| Component | Responsibility | Source |
|---|---|---|
| iOS, Android, Web | Presentation, durable sends, subscriptions and platform capabilities. | ios/, android/, web/ |
| API | Authentication, ownership, validation and durable admission. | server/src/http/ |
| Worker | Agent execution, tool dispatch, retries and reconciliation. | server/src/worker/, server/src/rebyte/ |
| Temporal | Durable timers and background coordination. | server/src/temporal/, server/src/background/ |
| Database repositories | Transactions, identity, leases and owned records. | server/src/db/repositories/ |
| Gadget gateway | Paired device sessions, command transport and event forwarding. | server/gadget-gateway/ |
The application backend uses Rebyte for agent execution, Composio for connected services, and server-side speech providers. Provider protocols are adapters behind the Impo API; clients do not call them directly.
Commands and subscriptions#
A command changes application state or requests work. A stream subscribes to that work. Disconnecting a stream does not cancel its run.
Every accepted send has stable identity. The client can retry an uncertain request, reconnect later and reconstruct the conversation without generating a second message. Cancellation is a separate command. See execution and recovery.
The three forms of execution#
Main Chat is the user's continuing conversation. The worker maintains a main Saved Agent and rotates Sessions while preserving readable history.
Tasks are isolated units of delegated work with separate conversations. A scheduled task is a trigger that admits ordinary task execution, not a different model runtime.
Background steps inspect or consolidate context on durable schedules. Feed and Memory use this path. They have their own scope and tool restrictions.
Where the boundaries matter#
- Model-generated content comes from a Rebyte Agent. Product generation does not run inside an HTTP handler.
- Native capabilities belong to a particular registered phone, with current permission state.
- Gadget commands belong to the paired account and use only registered operations.
- Database access goes through repositories. A feature handler does not acquire an unrestricted query builder.
- Provider secrets remain server-side. Device setup credentials are distinct from provider and gateway administration credentials.
For the hardware extension model, continue to Gadgets and the four rings. That model describes authority and customization; the diagram here describes deployment and data flow.
Implementation reference#
The detailed architecture reference, client protocol and runtime composition connect these concepts to the current implementation.