Community
Roadmap
The phases, what shipped, what is planned, and the gaps between the design and the code.
Each phase is shippable alone and ends with an acceptance test; a phase is done only when it passes.
| Phase | Scope | State |
|---|---|---|
| 0 Scaffold | the packages, the env schema, health, migrations for both schemas, the queue interface with postgres and memory, the oseq CLI, CI | done |
| 1 Engine core | the definition, templating and validation, versions, senders, connections and contacts, @opensequence/auth with Google, the Gmail and Calendar adapters, the mock adapter, enrollment with the one-sequence rule, the planner, advance with ownership, the email executor, the hosted opt-out, logic nodes, the task node, the signal processor, the reaper, flags, dry run | done: the quickstart runs end to end against the mock through the real HTTP app and workers |
| 2 Public API and webhooks | every endpoint with the OpenAPI file and the SDK, outbound webhooks with the full delivery contract, analytics, this site | in progress: the API, the webhooks, the analytics and the SDK exist; see the gaps below |
| 3 Allo, Attio and Calendar | SMS with the consent and time-zone gates, STOP, the dialer push, call.completed auto-completing call tasks, the Attio adapter with crm.* conditions, Calendar meeting_booked detection | the adapters exist; verification against real accounts is the acceptance test |
| 4 First client integration | a client on @opensequence/sdk with a canvas, a people table, an enroll dialog and the journey | |
| 5 LinkedIn tasks | linkedin_connect and linkedin_message task kinds, connection states | the task kinds and their signals exist |
| 6 Redis queue and load | the engine suite on SEQ_QUEUE=redis, 10,000 active enrollments with due lag under 2 minutes | the Redis backend exists |
| 7 Later | automated LinkedIn behind a flag, more adapters behind the same ports (SMTP and IMAP, Twilio, HubSpot), the crm_action and webhook nodes, split and experiments, auto-enroll rules, a minimal admin page, holidays, AI drafting |
Described in the design, not in the code yet
These docs describe the code. The architecture document goes further in a few places; each is a candidate for a pull request.
| Item | Where it would land |
|---|---|
POST /v1/sequences:simulate (render every template for a sample contact, return the path) and GET /v1/schema/examples | the sequences routes |
GET /v1/analytics/channels (all sequences compared by channel) and a 60-second analytics cache | the analytics routes |
PUT /v1/admin/engine/pause; GET /v1/engine/needs-review and POST .../resolve | the admin and engine routes |
the Idempotency-Key header (stored responses for 24 h, 422 IDEMPOTENCY_MISMATCH); the seq.idempotency_keys table exists | the HTTP layer |
X-Request-Id propagation; a Prometheus /metrics endpoint behind SEQ_METRICS; a per-channel circuit breaker | the server |
retention_days enforcement for runs, messages and signals | the retention job |
oseq secrets rotate, oseq webhooks replay, oseq queue dead list | replay | the CLI |
a 24-hour overlap after rotate-secret on webhook endpoints | the webhook schema (one secret per endpoint today) |
weekly_limit on channels | the executors' channel gate |
Gmail Pub/Sub watch registration and the pubsub_topic credential setting | the Google adapter and the poll job |
a deep merge of contact attrs (the code merges top-level keys) | the contacts repository |
typed attrs.* conditions from attrs_schema (the validator treats every attrs field as text) | the validator |
q (name or email search) on GET /v1/enrollments; readiness per step in the enrollment preview | the enrollments route and use case |
| pausing a disabled sender's running enrollments (today only new enrollments are refused) | the senders use case |
the validation codes NO_END, TOO_MANY_CONNECTS, BAD_EXIT (the schema and the unwired-transition rule cover them) | none needed |
snippets executed in CI against a container, test:snippets | this site |
Open items from the design that need a decision rather than code: the GitHub organization and npm scope registration, Google's app verification for the Gmail scopes, Attio rate limits and how deals link to people in a real workspace.