DocumentationArchitecture
Context, memory and storage
Understand what Impo stores, how personal context is formed, and how deletion reaches derived data.
On this page
Stores and ownershipEcho becomes personal contextMemory and retrievalFeed and connected appsExtending the data modelImpo keeps execution records separate from the content used to understand a person. A durable tool receipt and a long-term memory serve different purposes and have different lifecycles.
Stores and ownership#
| Store | What it owns |
|---|---|
| PostgreSQL | Users, ownership, conversations, submissions, leases, tool receipts, schedules, connector bindings and recording metadata. |
| Rebyte | Managed Sessions, Turns, Items and delivered files in the agent runtime. |
| S3 | Private audio uploads and per-user Echo transcript records in the production configuration. |
| Turso | A separate long-term memory database per user, including content, history and embeddings. |
| Client storage | Account-scoped pending commands, recording batches, drafts and device receipts. |
Local development can retain content in local PostgreSQL. It does not simulate production storage durability simply by exposing the same API.
Echo becomes personal context#
The phone captures audio under native permission and lifecycle rules. Immutable batches upload with server-issued S3 URLs. Workers transcribe the batch into anonymous speaker turns.
The user confirms which voice is theirs. That selection produces a shared personal-transcript projection used by Memory and Feed. Unconfirmed speech is not silently treated as the user's own speech. Speaker labels do not identify the same person across recordings.
Changing the review or deleting the recording revises that projection and withdraws stale derived content. These are data dependencies, not just UI filters.
Memory and retrieval#
Chat and confirmed Echo context can contribute to long-term memory. Memory retrieval is part of the main personal agent's instructions. The store keeps source references and change history so forgetting and expiration can be applied consistently.
Adding a new context source means defining ownership, retention, source revisions and deletion behavior. Do not write arbitrary derived text directly into a prompt and bypass the store's lifecycle.
Feed and connected apps#
The hourly background worker uses an isolated Rebyte Agent with read-only access to connected cloud apps. It looks for useful, supported findings. Empty checks produce no visible edition.
Cards retain source resources and connector generations. Disconnecting a service revokes dependent cards, actions and pending notifications. Native phone tools are excluded from these unattended checks.
Extending the data model#
Drizzle entities are the schema source of truth. Put new queries in a domain repository, keep complete transactions inside it, and use npm run db:push during development. Do not create a parallel migration history.
See the repository boundaries, Echo speaker contract and Brief contract before adding a source or a derived product surface.