Your backend should
understand your product.

A backend isn't just a database, some APIs, a few cloud services, and a pile of glue code. It's the actual things your product is built around: customers, orders, invoices, teams, subscriptions, workflows, permissions, events, and agents. Define them directly, and Vadyl turns them into data, APIs, logic, rules, migrations, integrations, observability, and operations that all stay connected to the same product model. When your product changes, the backend changes with it.

one definitionyour product model
all deriveddata, APIs, logic, ops
backend followsproduct changes

Current named customer

Neoterican
Product-first

Define the things in your product.
Vadyl runs the rest.

A backend isn't a database, some APIs, a few cloud services, and glue code. It's the actual things your product is built around — customers, orders, invoices, teams, subscriptions, workflows, permissions, events, agents — and everything connected to them. Vadyl draws the line. You define the product model. The platform turns it into a running backend, all wired to the same definition.

What you define · the product model

The things in your product.

Customers, orders, teams, subscriptions, permissions, workflows, events, agents. The semantic shape of what you're building. One source of truth — every other layer is derived from this.

When you change the product model, every other layer follows.

Underneath, infrastructure is the swappable substrate — Postgres or Mongo, S3 or Azure Blob, CloudFront or Cloudflare, ECS or Kubernetes, OIDC or SAML, Anthropic or OpenAI. Vadyl branches on declared capabilities so your product model never branches on vendor. Change databases, clouds, identity providers, or runtime substrates — your product stays the same.

Build on Vadyl

Your product gets the platform's invariants.

Once your product is defined, Vadyl wires it to the same operating plane the platform itself uses. Branching, sandboxes, audited deploys, canonical events, cross-provider rollback, agents bound to your model, observability and explainability for every decision — your product inherits all of it. Not a checklist of features to bolt on. Properties of being a Vadyl project at all.

Branching

Branchable everything, end-to-end

Schema, code, providers, federation, surfaces, agents — every typed manifest domain in the same DAG. Sandbox a change in a real isolated database. Three-way merge with semantic conflict detection.

Read more
Execution

Seven canonical execution surfaces

Core handlers, durable workflows, scheduled jobs, webhook receivers, event consumers, edge logic, management handlers — all wired, all governed, all capability-bounded by construction.

Read more
Scaling

Scale every surface by intent

API ingress, handlers, consumers, jobs, webhooks, and realtime gateways carry canonical scale policy: manual count, autoscale rules, load balancing, resource class, CPU, memory, storage, and accelerators.

Read more
Cross-provider

Compensation across every provider

Step 4 fails — Vadyl rolls back step 1, 2, and 3 across Postgres, Mongo, Stripe, SendGrid. No manual rollback scripts. Capability-driven 2PC where supported, saga LIFO everywhere else.

Read more
API surfaces

REST, GraphQL, gRPC, MCP, SDKs

Compiled from one canonical descriptor graph. Five SDK languages today — TypeScript, Python, C#, Go, Rust. The contract is the source of truth; every client tracks it.

Read more
Events

Events that cannot drift from data

Mutations reserve event intent in the same lifecycle. Realtime, webhooks, automation triggers, and agent reactions consume the canonical PlatformEvent stream - projections, not parallel pipelines.

Read more
Agents

Agents that cannot lie

Same canonical state. Same access enforcement. Same audit. Typed plan IR — no raw shell, SQL, or filesystem. Capability-aware LLM routing. Token budgets enforced preflight + reconciled.

Read more
Why decisions

Explainability as a peer plane

Every product decision carries a typed reason code projected from canonical authorities — never log-scraped. The compile pipeline IS the explain pipeline.

Read more
What happened

Observability by construction

Audit trails, operational trails, debug traces, OpenTelemetry spans, handler runs, workflow steps, provider calls - every product action enters the same observability plane.

Read more
Governance

Field encryption, RLS, fail-closed

Six-dimensional field security descriptor. AEAD envelope with AAD-bound context. Access policies compile native where supported, runtime where not. Same outcome.

Read more
Versioning

Atomic publications, locked workflows

Every project advance is a monotonic publication carrying a contract version + source commit. SDK manifest with seven version dimensions. Runtime check on the cross-layer compatibility seam.

Read more
Project surfaces

Publish any safe plane as capability

Entities, CLI commands, workflows, agents, analytics, events, webhooks, auth, runtime policy - make it a Vadyl project surface and let other projects install with audit, grants, billing, and revocation.

Read more
One product model. Many derived layers.

Everything your product is.
Already wired up.

Your product is more than a data model. Entities are the things in it; policies are who can do what; workflows are the long-running parts; custom logic is the behavior; agents are the AI; surfaces are how it reaches the world. Define each once. Vadyl wires them to each other and to the running backend — all from the same definition.

Your product nouns

Define your product once. Get the backend around it.

Describe what a Customer, Order, or Invoice means — fields, relations, who can access them. Vadyl creates the database tables, the typed API, the SDK, the access checks, the audit trail. No more keeping six definitions in sync.

schema.tsts
defineEntity(({
  name: "Customer",
  fields: ({ id: id(), email: email(unique()), }),
  relations: ({ orders: hasMany(Order), }),
}))
Branching

Branch your backend like you branch code.

Try a schema change in a real isolated database. Open a PR. Review the migration plan. Merge with confidence — never dread a database change again.

main· prod
staging
add-tax-fields· open
agents-pricing-experiment· 2 commits
Custom logic

Write code where it belongs.

API handlers. Long-running workflows. Scheduled jobs. Webhook receivers. Edge logic. Same SDK, same product entities, same auth — just drop the file in.

API handlerworkfloweventscheduledwebhookedgeadmin
Plug in anything

Use any database. Any cloud. Any service.

Postgres or Mongo. S3 or Azure Blob. SendGrid or Twilio. Vadyl keeps the wiring, secrets, and failover behind your product model — you write product logic.

Database
Storage
Cache
Distribution
Analytics
Runtime
Email
SMS
Identity
AI agents

AI agents that actually work safely.

Agents see the same entities, auth, and rules as the rest of the product. They can't hallucinate access. They can't blow past your budget. They show their work.

Anthropic · OpenAI · DeepSeek · Moonshot
Automation

When this happens, do that.

Trigger on product events. Run on a schedule. Wait for approval. Send an email. Compensate on failure. Build complex flows visually without a parallel automation model.

Read more
When the product changes

The backend changes with it.

When you add a field to Customer, rename a status on Order, tighten a permission, ship a new workflow, or swap a payment provider — that's a product change. Vadyl makes those changes safe by construction. Migrations don't break prod, sandboxes mirror reality, agents test your proposals before you merge, and when something fails across providers, Vadyl rolls it back.

Zero-downtime migrations

Schema changes that don't take prod down.

Vadyl classifies every migration into 8 risk levels and picks the right execution path. Add a NOT NULL column on a 50M-row table? It expands, backfills with checkpoint-resumable batches, then contracts.

EXPAND · add nullable column
BACKFILL · 8.4M / 50M rows
DUAL-WRITE · 12s remaining
CUTOVER · atomic swap
CONTRACT · drop legacy
Read more
Real sandboxes

Sandboxes with a real database. Not a mock.

Every workspace can spin up an isolated copy of Postgres, Mongo, or Redis with a sample of production data. Test the migration. Run the new agent. Break things on purpose. Discard when done.

sandboxisolated
postgres·2.4 GB sampled
redis·live-cloned
tenant·scoped to actor
Read more
Proposal testing

Agents test your proposal before you merge.

Open a PR. A Vadyl agent spins up a sandbox, replays last week's production traffic shape against your changes, and reports back — what broke, what slowed, what regressed. Reviewers see a real test report, not just a green checkmark.

agent.simulaterunning
Replay 14k checkout requests
Verify access policy still allows tenant reads
Compare p95 latency: -3ms · ok
1 query plan regressed (orders.placedAt)
Read more
Capability-aware

Same contract. Different execution per provider.

Postgres has native row-level security? Vadyl compiles to that. The provider doesn't? Runtime enforcement kicks in. Same entity, same access policy — the platform picks the right execution path. You don't write the if/else. Vadyl does.

internalts
if (caps.security.supportsNativeRls) {
  return compileToNativePolicy(access);
}
if (caps.transitions.expandThenBackfill) {
  return buildBackfillPlan(diff);
}
// otherwise compose runtime + saga
Read more
Saga compensation

When step 4 fails, Vadyl rolls back step 1, 2, and 3.

Crossing providers? Vadyl tracks every mutation and registers a compensation. If anything fails partway, it walks the chain backward — DELETE → UPDATE → INSERT — until the world is consistent again. No manual rollback scripts.

1.charge.createstripe
2.order.insertpostgres
3.inventory.decrmongodb
4.email.sendsendgrid
3.inventory.incrmongodb
2.order.deletepostgres
1.charge.refundstripe
Read more
Three-way merge

Merge backend changes with semantic conflict detection.

Schema, providers, federation, scheduling, webhooks, agents — 19 typed manifest domains, all branchable. When two PRs touch the same access policy or rename the same field, Vadyl surfaces the conflict before either lands.

main· prod
add-tax-fields· ready
rename-customer-email· conflict on Customer.email
Read more
Custom logic that knows your product

TypeScript, Python, Go, Rust. Same product, same types.

When you write logic — an order handler, a billing workflow, an agent action — it talks to the same Customer, Order, Subscription that your product model defines. Strict types end-to-end. The SDK regenerates the moment your product changes; the compiler catches the gap before runtime does.

src/handlers/createOrder.tsts
Core Handler
import { defineCoreHandler } from "@vadyl/sdk";
import { Order, Customer } from "@/entities";

export default defineCoreHandler(({
  name: "createOrder",
  input: { customerId: string, items: OrderItem[] },
  async handle(ctx, input) {
    const customer = await ctx.entities.Customer.findById(input.customerId);
    if (!customer) throw new NotFoundError("customer");

    return await ctx.entities.Order.create({
      customerId: customer.id,
      total: sum(input.items.map((i) => i.price)),
      status: "pending",
    });
  },
});

Your code reads and writes through your product's typed entities — no raw SQL, no manual ORMs, no leaking secrets. The same access rules, the same validations, the same audit. Test in a sandbox. Deploy with the rest.

AI agents

Agents that understand your product.

Most AI demos break the moment they touch real data. Vadyl agents see the same Customer, Order, Subscription you defined — bound to the same access rules, governed by the same policies, observable in the same audit trail. They can't leak what they shouldn't see, can't spend past your budget, and every action they take is traceable to the product model that produced it. They operate inside the backend's typed substrate, not around it through brittle tool calls.

agents/pricing-optimizer.tsts
Agent
export default defineAgent(({
  name: "PricingOptimizer",
  model: { tier: "frontier", requires: ["tool-use"] },
  budget: { maxTokens: 50_000, maxTurns: 20 },
  memory: { scope: "project", persistent: true },
  tools: [queryProducts, updatePricing],
}));
See how Vadyl agents work

Bound to your product model

Same entities, same access rules, same audit trail. Agents work on the real Customer, Order, Subscription — not a stale snapshot or a mock.

They can't escape your guardrails

Agents can only do what your access policies already allow. Roles, row filters, field masks — all enforced. The product's rules are the agent's rules.

Pick the right model automatically

Tell the agent it needs vision and tool use. Vadyl picks the best model from your providers. Switch any time without rewriting agents.

Hard budgets, every run

Set a token cap per definition or per call. Vadyl checks before the model call and reconciles after. No surprise OpenAI bills.

Memory that doesn't drift

Facts are versioned and superseded — never silently overwritten. Trace every recall back to where it came from.

MCP, ready to plug in

Connect Claude Desktop, Cursor, or any MCP client. Tools come straight from your product's API surface — filtered by what the agent is allowed to do.

Customer proof

A product vision with grounded proof.

Vadyl can describe the complete final-form platform while keeping customer and client claims anchored to the real relationship it can name today.

Customer testimonial

Neoterican

Vadyl gives Neoterican a backend that follows the product model instead of drifting into disconnected services. One definition reaches data, APIs, governance, and operations.

Publication standard

Real proof only

Customer logos, testimonials, and operating metrics appear only when they come from a real approved source.

Get started

Your product is one definition away.

Sign up free. Define your product: entities, permissions, workflows, agents, and surfaces. Watch Vadyl turn that definition into a running backend with APIs, SDKs, database tables, validations, and an audit trail in under five minutes. When the product changes, the backend changes with it.