Skip to content
Packages

Integration Runtime Layer

集成运行时层

Queues, cache, event bus, email, uploads, storage, search, SMS, notifications, webhooks, collaboration, and provider vaults share one adapter lane.

17 packages, 94 source files and 37 test files in packages/integrations. · Source ↗ · Docs ↗

Port-and-adapter bus

Transport details collect here so AI, commerce, and app packages call stable ports instead of vendor SDKs.

  • @nebutra/queuedurable delivery and worker contracts
  • @nebutra/cachecache provider boundary
  • @nebutra/emailResend, Console transports
  • @nebutra/uploadsupload validation and storage handoff
  • @nebutra/webhookssignature verification and delivery
  • @nebutra/collabtenant-partitioned CRDT rooms

What it owns

  • Cache, queue, event-bus, saga, notifications, onboarding, and webhooks
  • Search, storage, uploads, SMS, TTS, video compose, and integration vault
  • Provider-facing adapters that keep apps from depending on vendor SDKs directly

Where it stops

  • Business workflows call integration ports; provider details stay here.
  • AI and commerce packages reuse adapters without owning transport code.

How we know it works

  • queue, cache, webhook, and search package tests
  • background job docs and operational smoke checks

In code

queue.ts
1import { getQueue, createJob } from "@nebutra/queue";
2
3const queue = await getQueue();
4
5await queue.enqueue(
6  createJob("email", "send", {
7    to: "[email protected]",
8    template: "welcome",
9  }, { tenantId: org.id }),
10);

Packages

17 packages in packages/integrations.

admin-tooling

Self-serve operator dashboards — tenants, billing overrides, feature-flag flips — all gated by @nebutra/permissions.

94.7%hit rate
  • user:abc123HIT1.2ms
  • org:xyz890MISS18ms
  • session:f02HIT0.8ms
Redis · Upstash · memory
cache

Tag-based cache with Redis, Upstash, or in-memory backend. Same get/set/invalidate(tags) for serverless and self-hosted.

collab

Realtime co-editing primitives — Yjs CRDT, WebSocket transport, presence cursors. The piece every multi-user app eventually needs.

email

Render React Email templates, dispatch through Resend / SES / SMTP. One sendEmail(template, props, recipient) for every transactional flow.

  • billing.invoice.paid12 subs
  • auth.user.signin8 subs
  • inventory.item.updated4 subs
  • system.error2 subs
event-bus

In-process pub/sub with cross-app fanout. Used by audit, billing, and notifications to react to commerce events without circular imports.

tenant_abc · 3 integrations
Creem APIcreem_•••••••8847
encrypted
OpenAI Keysk-proj-•••••••a13e
encrypted
Slack OAuthxoxb-•••••••92f0
encrypted
AES-256-GCM · KMS-wrapped
integration-vault

Per-tenant credential store for OAuth integrations and API keys — Creem, Gmail OAuth, Notion API. KMS-wrapped, refresh-rotated.

Inbox · 3 new
  • invoice.paid

    payment received

    2m ago
  • user.joined

    new teammate

    18m ago
  • alert.triggered

    rate limit hit

    1h ago
notifications

Multi-channel notifications — in-app, email, push, SMS, chat — with self-hosted direct dispatchers and recipient-preference resolution.

4
AccountWorkspaceInviteFirst action
3 of 4 75%
x
Almost there
onboarding

Multi-step product onboarding with persistence — checklist state per user, branching flows, A/B-friendly step gating.

job_9f3a· processing412ms
job_8c41· success184ms
job_6b22· failed5012ms
job_5a18· pending—
queue

Message queue — Upstash QStash (serverless), with an in-memory fallback for local dev and tests.

saga

Distributed-transaction primitives — compensating actions, retry/rollback hooks, idempotency keys. WIP; ships behind a flag.

search

Full-text + vector search — pgvector (Postgres). BM25 keyword search and vector cosine search over your own database, no external search infra.

SMS
Twilio
Your Nebutra OTP is 8472. Expires in 5 minutes.
delivered
+1 415 ··· 0188·delivered·1.2s
sms

Transactional SMS + OTP verify — Twilio Verify globally, Aliyun for mainland China — same send(to, template) surface, automatic local-prefix routing.

nebutra-exports
us-east-1
reports/12.4 GB
x
backups/847 MB
x
Provider · S3
storage

Lower-tier object storage helpers — list, copy, ACL, signed reads. Sits below @nebutra/uploads when you don't need multipart logic.

“Welcome to Nebutra. Let me show you around.”

0:08 / 0:14
Aria · ElevenLabs
tts

Text-to-speech with OpenAI / ElevenLabs / Azure backends. Streamed audio, voice presets, per-tenant rate-limit budgets.

report-Q4-2025.pdf48.2 MB
x
62% · part 6 of 1000:14
S3multipart · resumable
uploads

Large-file uploads — S3 / R2 multipart, Tus resumable, presigned URLs. Picks the right strategy by file size automatically.

0:08 / 0:42Remotion · 1080p
video-compose

Programmatic video composition via Remotion. Render reels, social cards, and on-brand product GIFs from a JSON spec.

https://hooks.app.com/v1/billing
200invoice.paid
OK124ms · 2m ago
200user.created
OK88ms · 18m ago
503subscription.canceled
Retryretry 2/5 · 1h ago
webhooks

Outbound webhook delivery — self-hosted custom dispatcher, signed payloads, retry with exponential backoff, subscriber portal for self-serve.