Oblive Docs

Build on Oblive

Extend Oblive through its typed, durable, and reviewable application and package boundaries.

This guide is for contributors adding product behavior, integrations, skills, profiles, API contracts, runtime capabilities, storage mechanics, or local-stack configuration.

Start with Ownership

Before writing code, identify the canonical owner of the state you are changing. Do not select a queue, cache, process, or framework before answering that question.

ConcernCanonical Owner
Organizations, chats, tasks, attempts, inbox, schedules, actionsPostgreSQL
Built-in templates, skills, managed integration presentationGit agent-pack catalog
Published catalog revisions and large artifactsS3-compatible object storage
Organization profile selections and pinsPostgreSQL profile records
Semantic organizational memoryFiles and object storage
Live chat signalsRedis Pub/Sub as transport
Worker wakeupsRedis Streams as transport

Redis, a browser, a harness session, process memory, and a local workspace are never the only durable owner.

Choose an Extension Path

Engineering Style

  • Prefer functions and small composable helpers.
  • Keep factories thin and public exports intentional.
  • Parse unknown at integration boundaries; do not introduce any.
  • Use typed discriminated unions for persisted variants.
  • Keep behavior in the layer that owns it.
  • Reuse existing lifecycle records before adding tables or services.
  • Prefer the smallest reversible change that closes the workflow end to end.

Required Documentation Impact Review

Every change under apps/ or packages/ must assess:

  1. Does agent-authored control-plane behavior require an oblivectl or command-reference change?
  2. Does an HTTP contract require backend OpenAPI documentation?
  3. Does setup, configuration, behavior, architecture, or an extension workflow require a page here?
  4. Does an accepted decision or cross-layer journey require its owning architecture reference?

Record deliberate not-applicable decisions. Documentation is part of the change, not follow-up work.