ImpoDocs
Browse documentation

DocumentationArchitecture

The system at a glance

One application protocol, durable execution, and clear boundaries between presentation and authority.

On this pageThe main componentsCommands and subscriptionsThe three forms of executionWhere the boundaries matterImplementation reference

Impo 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.

Clients and gadgets connect through the Impo API and gateway. Workers coordinate agent execution and owned application storage.

The main components#

ComponentResponsibilitySource
iOS, Android, WebPresentation, durable sends, subscriptions and platform capabilities.ios/, android/, web/
APIAuthentication, ownership, validation and durable admission.server/src/http/
WorkerAgent execution, tool dispatch, retries and reconciliation.server/src/worker/, server/src/rebyte/
TemporalDurable timers and background coordination.server/src/temporal/, server/src/background/
Database repositoriesTransactions, identity, leases and owned records.server/src/db/repositories/
Gadget gatewayPaired 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.