Voltro Framework · AI Native End-to-End TypeScript

Das Full-Stack-Framework,
das sich selbst verdrahtet.

Reaktives Postgres → React über WebSocket. Multi-tenant, durchgängig typsicher, durable Workflows, AI-Primitives — alles first-party. Du baust Komponenten für deine Routen, deine Mutations, deine Agents genauso, wie du Komponenten für deine UI baust.

Self-host heute · Voltro Cloud bald
posts.create.mutation.ts
TypeScript
// posts.create.mutation.ts
import { defineMutation } from '@voltro/protocol'
import { Schema } from 'effect'

export const createPost = defineMutation({
  name:   'posts.create',
  target: { table: 'posts', op: 'insert' },
  input:  Schema.Struct({ body: Schema.String }),
  output: Post,
})

// posts.create.mutation.server.ts
export default async (input, ctx) =>
  ctx.store.insert('posts', { body: input.body })

Weil dein Stack heute aus 20 Paketen besteht — und keines weiß vom anderen.

Dein Auth-Provider kennt deine Datenbank nicht. Deine Job-Queue kennt dein Schema nicht. Dein AI-SDK kennt deine Tenants nicht. Jede Zeile Klebecode dazwischen ist ein Bug in Warteposition, ein Deployment, das gleich kaputtgeht, ein Refactor, der dich beißen wird. Voltros Primitives teilen sich Runtime, Subject, Change-Feed, Migrationen. Du bist nicht mehr die Integrationsschicht.

Weniger Stack-Zusammenbau.
Mehr Produkt.

Reaktiv von Haus aus

Abonniere eine Query mit einem Hook. Die Runtime streamt jeden Write zurück über WebSocket — kein Polling, kein Refetch, kein manuelles Cache-Invalidieren. Auto-Optimistic gratis dabei.

Reaktive Queries →

Multi-Tenancy als Primitive

Tenant-Isolation lebt im Schema, nicht in deinem Code. Cross-Tenant-Reads + Writes werden von der Runtime blockiert — nicht von Hoffnung. Row-Level Security gratis mit dem Mixin.

Multi-Tenancy →

Durable Workflows

Langläufige Operationen überleben Deployments, Retries und Crashes. Gebaut auf @effect/workflow + @effect/cluster — kein Temporal, kein Inngest, keine separate Queue-Infrastruktur.

Durable Workflows →

AI als Primitive

Agents, Tools, RAG, Streaming-Completions, Thread-Persistenz — alles erstklassig. Vercel AI SDK gewrappt hinter stabiler @voltro/ai-Surface, damit du Provider tauschen kannst ohne Code anzufassen.

AI-Primitives →

Durchgängig typsicher

Effect Schema fließt von deinen Postgres-Tabellen bis zu deinen React-Components. Kein Codegen-Schritt, den du vergessen kannst. Mutation-Errors sind typed; der Client pattern-matcht sie.

Typsicherheit →

Schema-DSL mit Mixins

Tabellen komponieren wie CSS-Klassen. audit() ergänzt createdAt + createdBy. tenant() ergänzt Isolation. softDelete() ergänzt schonende Löschungen. Eigene Mixins komponieren sich daneben.

Schema-DSL →

Schema-getriebene UI

Der typisierte Descriptor IST das Formular. AutoForm bindet an eine Mutation, DataTable an eine Query — Felder und Spalten aus effect/Schema, Validierung und Live-Auto-Optimistic gratis. Plus Drop-in-Komponenten für Workflow, Presence und AI-Chat.

Schema-getriebene UI →

Ein Schema, jedes SQL-Backend

Dieselbe App läuft auf Postgres, MySQL, MariaDB, MSSQL oder SQLite. Ein Query-Builder, ein Migrations-Planer, zur Laufzeit auf jeden Dialekt kompiliert — mit nativem Change-Data-Capture für die Reaktivität. Backend-Wechsel per Env-Var.

Datenbanken →

Auth, eingebaut

Passwörter, signierte Cookie-Sessions, Passkeys, MFA, API-Keys und RBAC kommen mit dem Framework — kein Bolt-on. Eigenen IdP mitbringen, wenn nötig: sechs Adapter plus SAML und SCIM.

Auth →

Adressiert drei Zielgruppen.
Gemacht für eine: Leute, deren Idee diese Woche live sein soll.

Agenturen & kleine Teams

Schluss damit, dasselbe SaaS-Gerüst bei jedem Kunden neu zu verdrahten.

Den Auth-Billing-Cron-Mail-Stack hast du dieses Jahr schon sechs Mal von Hand zusammengeschraubt. Voltro IST dieser Stack — geformt, getestet, dogfooded. Neue Kunden-App mit funktionierendem Dashboard, Multi-Tenant-DB, durable Jobs und E-Mail in unter einer Stunde aufgesetzt.

Agentur-Playbook ansehen

Startups & Solo-Founder

Gebaut, damit du den Teil bauen kannst, der wirklich deiner ist.

Dein Wettbewerbsvorteil ist das Produkt, nicht die Migrationen. Voltro shippt jede Primitive, die eine echte SaaS braucht — und macht dann den Weg frei. Reaktive Listen für die Demo. Multi-Tenant für den ersten zahlenden Kunden. Durable Workflows für die erste Integration. Du zahlst für nichts davon technische Schulden.

Startup-Playbook ansehen

Enterprise & regulierte Workloads

Audit-logged, tenant-isoliert, observable — ohne sechsmonatige Integrationsphase.

Gebaut auf Effect-TS-Internals (Microsoft / Block / Discord in Produktion). Multi-Dialekt Postgres-first mit Read-Replicas, vollständige OpenTelemetry-Traces, Row-Level Security via Tenant-Mixin, signierte Sessions, Rate-Limiting, Audit-Log-Plugin. Selber hosten via Helm heute; managed Voltro Cloud (dieselben Primitives) kommt bald.

Enterprise-Playbook ansehen

Eine reaktive, multi-tenant, typsichere Mutation
in 6 Zeilen.

Kein Klebecode. Kein Codegen-Schritt, den du vergessen hast. Die Mutation-Datei IST der Vertrag — typed Input, typed Output, deklariertes Target-Table für Auto-Optimistic-Patches, runtime-erzwungene Tenant-Scope.

posts/create.ts
Before
// Express + Postgres + Redis pub/sub + manual
// tenant guard + types on every step.
app.post('/posts', requireAuth, async (req, res) => {
  if (!req.user.tenantId) return res.status(401).end()
  const row = await db.query(
    'insert into posts (tenant_id, body) values ($1, $2) returning *',
    [req.user.tenantId, req.body.body],
  )
  await redis.publish(
    `posts:${req.user.tenantId}`,
    JSON.stringify(row.rows[0]),
  )
  res.json(row.rows[0])
})

// Then on the client:
useEffect(() => {
  const ws = new WebSocket(...)
  ws.onmessage = (ev) => setPosts(p => [JSON.parse(ev.data), ...p])
  return () => ws.close()
}, [])
const create = (body) =>
  fetch('/posts', { method: 'POST', body }).then(r => r.json())
posts.create.mutation.tsx
With Voltro
// One mutation file. Tenant guard, pub/sub,
// types, optimistic patches — all framework-managed.
export const createPost = defineMutation({
  name:   'posts.create',
  target: { table: 'posts', op: 'insert' },
  input:  Schema.Struct({ body: Schema.String }),
  output: Post,
})
// posts.create.mutation.server.ts
export default async (input, ctx) =>
  ctx.store.insert('posts', { body: input.body })

// On the client:
const { data: posts } = useSubscription('app', 'posts.list')
const create = useMutation('app', 'posts.create')
// Reactive list updates. Optimistic patch on every create.
// No glue. No codegen. No useEffect.

Gebaut für die langweiligen Sachen,
damit du die interessanten machen kannst.

Boilerplate-Dateien
~0
Kein Router-Config. Kein Codegen-Schritt.
Subscription-Delta-Latenz
<0ms
p50 in-region. Real-time, nicht pollend.
End-to-End typsicher
0%
DB-Rows → Mutations → React-Props.
Von `pnpm create` bis live
0s
Ein CLI-Command. Real-time inklusive.

Was Leute fragen, bevor sie installieren.

Warum intern Effect-TS?
Weil durable Execution, strukturierte Concurrency, typed Errors und Dependency Injection Probleme sind, die Effect bereits korrekt löst. Voltro auf Effect zu bauen heißt: wir erfinden Retry-Semantik, Layer-Composition und Tracer-Integration nicht neu — wir kriegen sie geschenkt.
Muss ich Effect im Anwendungscode benutzen?
Nein. Jeder Handler (Mutation, Query, Action) akzeptiert sowohl plain `async`/`await`-Funktionen ALS AUCH `Effect.gen`. Default für CRUD: async. Greif zu Effect, wenn du typed Errors, Retries, Timeouts oder Service-Dependencies brauchst. Mische frei innerhalb einer App.
Gehört mir meine Datenbank?
Ja. Voltro läuft gegen dein Postgres (oder MySQL/MariaDB/MSSQL/SQLite). Die Datenbank gehört dir — deine Connection-String, deine Backups, deine Zugriffsregeln. Das Framework ist eine Runtime, die daneben lebt; wir proxyen deine Daten nie durch Voltro-Infrastruktur, außer du wählst explizit Voltro Cloud als Managed-Deploy-Ziel.
Warum Vite + React 19 statt Next.js?
Voltros Web-Layer behandelt React als UI-Library, nicht als Framework. Vite gibt uns einen schnellen Dev-Loop und eine kleine Surface; React 19 shippt die Primitives, die wir brauchen (Suspense, Transitions, Streaming). Wir brauchen kein Meta-Framework mit Page-Router-Meinungen on top — File-basiertes Routing, Layouts, Loader, SSG, SSR, ISR und Islands leben in der Voltro-Runtime selbst.
Kann ich das ohne die Cloud betreiben?
Ja. Voltro shippt drei Deploy-Baselines — bare (systemd), compose (Docker Compose) und helm (Kubernetes). Beim `voltro create-project` wählen oder später per `voltro baseline set` wechseln. Voltro Cloud wird Managed-Convenience für Teams, die Postgres + Redis + Observability nicht selbst betreiben wollen — es kommt bald. In beiden Fällen dieselben Primitives.
Welche Datenbanken werden unterstützt?
Postgres (empfohlen für natives LISTEN/NOTIFY-getriebenes Cross-Instance-Reactivity), MariaDB (Binlog-CDC), MySQL 8+, MSSQL 2019+, SQLite 3.38+. Wechsel mit einer Env-Variable. Für Dialekte ohne natives CDC ergänzt @voltro/plugin-broadcast Cross-Instance-Reaktivität.
Wie hoste ich das in Produktion?
Drei Baselines werden mit dem Framework geliefert: `bare` (systemd-Unit + Env-Beispiel), `compose` (Docker Compose mit Postgres), `helm` (Kubernetes-Chart mit Pro-Env-Values). Beim `voltro create-project` wählen oder später per `voltro baseline set` wechseln.

Du kannst morgen eine funktionierende SaaS haben.
Oder du kannst ein Meeting dazu haben.

Ein CLI-Command, ein Postgres, ein Repo. Reaktive Listen, Multi-Tenant-DB, durable Jobs, Auth, Billing — alles verdrahtet. Docs öffnen, Quickstart folgen, Demo vor dem Mittag shippen.

Keine Kreditkarte. Deine Daten, deine Hardware, deine Hooks — nimm mit, was du baust.