Custom logic

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.

The seven canonical surfaces

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.

Operational topology

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.

Language-neutral by construction

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.

7
Execution surfaces

All canonical, all bounded

Per-surface
Scaling policy

Topology, resources, ingress

Three-layer
Capability enforcement

Type, compile, runtime

Language-neutral
By construction

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.