← All BaaS products
Workflow Engine Beta

Workflow

Kanject.Workflow

Durable workflows for your .NET services — a trigger, ordered steps and approval gates, where every step writes a record you can point to. Defined in code, tuned per tenant, run in your own AWS.

WORKFLOW · leave-request · v1evaluating When…
leave_requestleave.requested
who'usr_ada'
type'annual'
dates'12–16 May'
starts a runwhen type != 'sick' …
  1. notificationtaps a shoulder
    step 1notification.send
  2. approvalwaits for a person
    step 2approval.gate
  3. team_calendarupdates it
    step 3UpdateCalendar()
RUN HISTORY · run_7f2c
leave-request v1 · usr_ada
Completed
    6
    CAPABILITIES
    YOUR ACCOUNT
    NATIVE C#
    4
    WAYS TO START

    Drawn like the records it keeps.

    A trigger starts a run. Steps go in order, a gate waits for a person, and every step writes a record the run points to, so its history is the audit trail. The records below are examples; yours are whatever your service keeps.

    Four ways to start · what it writes

    An event, a schedule, Run now or a webhook starts a run. Each step writes a record — one your service owns, or a receipt for a call it made — and the run keeps a pointer to it.

    Pick a workflow to watch it run — pick it again to replay.
    an eventa scheduleRun nowa webhooktaps a shoulderwaits for a personupdates itcalls a webhookleave_requestwhothe colleaguetypeannual · sick · otherdatesfrom → toschedulenameweekly summarywhothe whole teamrunsevery Monday, 09:00saved_checknameoverdue invoiceswhothe finance grouprunswhen someone taps Run noworderitemswhat they boughttotalwhat they paidarrivesposted by a Zap, signedworkflow_runtriggerany of the four waysstepsrun in ordergatecan pause the resttouchesevery record it writesnotificationtowhoever the step nameshowany channel you send onsaysa template, filled inapprovalapprovera role, a user, a fieldstatuswaiting → approvedon_rejectstops the restteam_calendarentrywho is out, whenwritten_byyour inline steponlyonce it is approvedwebhook_deliverytoZapier · Make · n8nsignedHMAC + idempotency keykeepsthe response code
    1. leave_requestA leave-request event arrives — its type isn't sick, so the When passes
    2. notificationStep 1 taps the manager on the shoulder
    3. approvalStep 2 parks the run until the manager decides
    4. team_calendarStep 3, an inline method, writes the calendar entry

    —Pick a workflow to watch it run — pick it again to replay.

    None of this is fixed. Code owns the structure; tenants own the parameters and toggles; a fork owns everything but its preset's pinned steps.

    Every step leaves a record.

    01

    Start from anything

    An event on your bus, a cron or rate schedule, a "Run now" someone dispatches, or a signed webhook, so Zapier, Make and n8n can start a run too.

    [ScheduleTrigger("cron(…)")]
    02

    Approval gates

    A gate parks the run until a person approves or rejects, with a reminder if they don’t. By default a rejection stops the remaining steps.

    [Gate(2, OnReject = …)]
    03

    Every step writes a record

    A step returns an Effect that points at what it wrote; a step that writes nothing fails the build. The run history is an audit trail, not a log.

    Task<Effect>
    04

    Conditions without code

    A small When language (paths, comparisons, and / or / not) skips what doesn’t apply. No code to run, so tenants can edit it safely.

    When = "trigger.days > 5"
    05

    Code owns the structure

    Ship workflows as [Workflow] classes. Tenants switch them on or off, set parameters and toggle optional steps, or fork a preset into their own.

    StepPin.Optional
    06

    Durable runs

    State is saved at every step, so a run resumes after a crash and retries with backoff, on DynamoDB and SQS in your own account.

    RunDriver.Queued
    One NuGet install. Zero glue code.

    Kanject.Workflow ships into your AWS, registers itself with one line in Program.cs, and exposes a typed API the rest of your service can use immediately.

    Read the deployment guide →
    Private beta

    Want in early?

    Workflow is in private beta. Tell us what you'd build with it and we'll bring you in as places open — and you'll help shape it before general availability. No purchase, no sales call.

    No spam, no marketing list — just beta access and release notes.
    Unsubscribe with one click from any email we send.
    Your address never leaves Kanject — see our privacy policy.