Write code where it belongs.
Vadyl's authored runtime is language-neutral by design. Seven canonical execution surfaces - capability-bounded by construction, and independently placeable by Runtime Fabric. Same product model across them, same SDK, same auth. The runtime bridge is typed, the capability matrix is enforced at type-check, compile, and runtime. There is no raw DB access. There is no arbitrary egress. There are no sticky-memory tricks.
Each capability-bounded. No bypass.
Type-level: each surface exposes only its tier. Compile-time: ValidateImportsAsync rejects forbidden imports. Runtime: BridgeCapabilityEnforcer.ForSurface refuses off-tier calls. Three layers of enforcement.
Core handler
Synchronous request-response handlers. Reach data through ctx.entities. Reach external services through ctx.connections. The default surface for ordinary business logic.
Durable workflow
Long-running orchestration. ctx.step, ctx.waitForSignal, ctx.compensate, and publication-pinned replay keep the workflow durable across process movement.
Event consumer
Subscribe to canonical platform events. Idempotent contract under at-least-once dispatch. Outbox-backed events never publish twice from the source mutation.
Scheduled job
Cron, interval, one-shot triggers. Distributed locks across instances. Per-definition and per-project concurrency caps. ServiceProfile authorization.
Webhook handler
Inbound webhooks with InboundWebhookReceipt idempotency, PublicReceiverKey routing, HMAC verification on bytes, and project-level receiver policy.
Edge handler
Constrained surface for low-latency stateless logic. EdgeContext exposes only edge-tier methods. Hot business logic stays in core.
Management handler
Schema transitions, branching mutations, publication mutations, capability grants, and surface installations are gated to this privileged surface.
The surface declares behavior. Runtime Fabric declares shape.
Authored code does not know whether it runs in ECS, Kubernetes, Cloud Run, a shared worker pool, or a per-surface service. The project topology attaches scaling, ingress, and resource intent to each execution surface.
Per-surface scaling
Core handlers can autoscale on request pressure while event consumers follow queue depth, scheduled jobs stay fixed, and realtime gateways track connection pressure.
Per-surface resources
CPU, memory, storage, bandwidth, resource class, accelerator class, and edge-isolate budgets live in canonical project policy, not provider JSON.
Per-surface exposure
API ingress and webhooks can be load balanced publicly; internal consumers can stay private; edge handlers can attach to distribution origins.
TypeScript first. Python, Go, Rust, C# as peer projections.
The execution model, product contract backbone, runtime bridge protocol, authority model, and capability grants are all language-neutral. New authoring languages land as peer projections from the same canonical surface.
Out-of-process workers
Workers run in their native runtime. Node.js for TypeScript today. Communication uses a typed host bridge over named pipe or Unix domain socket.
Exactly-once dispatch
PendingInvocation.TryClaim uses interlocked claiming. Exactly-once at the dispatcher; idempotent at every consumer.
Graceful drain
VADYL_DRAIN triggers worker drain. In-flight invocations complete; new ones reject; timeout escalation preserves durable recovery.
ctx.entities
Typed CRUD through the runtime bridge. Reaches the product entity model with full access enforcement, audit, cache, and events.
ctx.connections
Governed external integrations through typed bindings. Secret references via the key ring. Egress policy enforced at three layers.
Workflow primitives
ctx.step, ctx.waitForSignal, and ctx.compensate surface only on the DurableWorkflow tier. A core handler cannot call what its tier cannot own.
All canonical, all bounded
Topology, resources, ingress
Type, compile, runtime
TS first, peers planned
Author handlers in your language.
TypeScript today. Python, Go, Rust, C# as peer projections. Same product model. Same SDK shape. Same capability bounds. The authored runtime never bends to one language.