Zekt in one minute
Your platform team already has the automation. Zekt turns it into products the rest of the company can subscribe to.
Connect
A cross-organization event bus for GitHub. One org publishes, every subscribed org's workflow runs — securely, with replay and a full audit trail.
Orchestrate
Requestors send one declarative payload through Zekt Action. Zekt runs the services in order, passes outputs between them, and hands the results back.
Productise
Providers publish services to the Zekt Directory with versioned contracts in the Zekt Registry. Consumers discover, subscribe and self-serve.
The Problem Nobody Talks About
GitHub is the world's development platform. Millions of teams use it every day to build, test, and deploy software. But GitHub was designed around a single assumption: everything that matters happens inside one organization.
In the real world, that's almost never true.
Software supply chains cross organizational boundaries constantly. A platform team publishes a library — and three partner teams in separate orgs need to know immediately. A vendor pushes a security patch — and every customer who depends on that service needs to trigger downstream CI/CD. An internal tools team deprecates an API — and twelve consumer repos across five orgs need to react.
GitHub Actions can do almost anything within your org. But the moment you need one org's event to trigger another org's workflow — you're on your own.
What People Actually Do Today
We asked dozens of engineering teams how they handle cross-org workflow orchestration. The answers were... creative:
-
The Curl ScriptA CI step that calls
repository_dispatchon the target repo using a PAT token. It works — until someone rotates the token, or a third consumer needs to subscribe, or someone asks "what happened last Tuesday?" -
The Shared DatabaseA polling mechanism where consumers check a shared store every few minutes. Fragile, wasteful, and impossible to audit.
-
The Slack Message"Hey, we just deployed v2.4 — can you update your config?" A human in the loop, every time. Fast for the first month. Unmanageable by month three.
-
NothingTeams simply don't coordinate. They accept the drift, the delayed reactions, and the inevitable "why is this broken?" Slack thread at 2 AM.
None of these approaches give you replay. None give you an audit trail. None enforce zero-trust security. And none scale beyond a handful of point-to-point connections.
The Moment It Clicked
We'd been living with this problem ourselves — stitching together curl scripts, managing PAT tokens, and losing sleep over "did that event actually fire?" questions. One day, after spending hours debugging a failed cross-org dispatch that had silently dropped, we asked a simple question:
Why isn't there an event bus for GitHub? Not a generic webhook relay. Not a 7,000-app-integration platform. Just a purpose-built system that lets GitHub organizations publish events and other organizations subscribe to them — reliably, securely, and with full auditability.
We looked for it. It didn't exist. So we built it.
Then Our Customers Asked the Next Question
An event bus answers "something happened — react to it." Within weeks, the teams using Zekt were asking for something bigger: "Can I ask five services, owned by three teams, to do something for me — in the right order — and get the results back in my own workflow?"
That question is the everyday reality of platform engineering. A product team needs a subscription, then a resource group, then a key vault, then a pipeline identity. Each piece is automated by someone — usually as a GitHub workflow. Nobody has made them composable.
"Tell the others it happened."
- One-to-many notifications
- Consumers decide what to do
- Fire and forget, with replay
"Do these things for me, in this order."
- Requestor-driven, declarative chains
- Outputs flow from one service to the next
- Results return to the requesting workflow
Declarative Orchestration: One Payload, Many Services
With Zekt, the requestor never scripts the chain. They declare it. A single Zekt Action step sends an orchestration payload to Zekt Core, which dispatches each service to its owner's backend workflow, waits for it to finish, resolves its outputs into the next step's input, and returns the combined result to the requestor.
- 1 person Requestor workflow Product team declares what it needs
- 2 send Zekt Action Validates and submits the payload
- 3 account_tree Zekt Core Orders steps, resolves outputs, tracks every hop
- 4 dns Provider backends Each service runs as a native GitHub workflow
- 5 keyboard_return Results returned Outputs land back in the requestor's workflow
{
"default_service_owner": "platform-team-org",
"services": [
{
"step_id": "create-sub",
"service_slug": "new-azure-subscription",
"input": { "billing_account": "ba-123" }
},
{
"step_id": "create-rg",
"service_slug": "new-azure-resource-group",
"depends_on": ["create-sub"],
"input": {
"subscription_id": "$zekt{{ steps.create-sub.outputs.subscription_id }}"
}
},
{
"step_id": "create-kv",
"service_slug": "new-azure-keyvault",
"depends_on": ["create-rg"],
"input": {
"resource_group": "$zekt{{ steps.create-rg.outputs.resource_group_name }}"
}
}
]
}
-
description
What, not how. The requestor names services by their registered slug and supplies inputs. The provider's repositories, runners and scripts stay behind the abstraction.
-
low_priority
Order is honoured. Steps run in the order you declare, with
depends_onmaking the dependencies explicit — up to 20 services in one request. -
swap_horiz
Outputs become inputs.
$zekt{{ steps.X.outputs.Y }}wires one service's result into the next, resolved by Zekt at dispatch time. -
keyboard_return
Results come home. Output metadata is returned to the requesting workflow, so its own logic can carry on with real values.
Contracts You Can Build On: Zekt Registry & Schema Versioning
Composing services owned by other teams only works if you can trust their interfaces. That is what the Zekt Registry is for: every service can publish versioned schemas describing what it accepts and what it returns — the contract between provider and consumer.
Versioned input schemas
Consumers see exactly which inputs a service expects, and at which version — before they send a single request.
Published output schemas
Providers declare the fields a step reports on completion, so the next service in the chain can rely on them.
Breaking changes are flagged
A new schema version that breaks the contract is marked as breaking in the Registry — change becomes visible, not a surprise.
Strict resolution, on request
Opt into strict output resolution and a chain referencing an undeclared output fails at dispatch — not three steps later.
Providers get to evolve their automation. Consumers get to depend on it. The versioned contract is what lets both happen at the same time.
Where Zekt Fits in Platform Engineering
Platform engineering is about one thing: letting product teams consume golden paths without filing a ticket. Most internal developer platforms get there by adding another portal, another backend and another runtime to maintain. Zekt takes a different route — it is a layer on top of GitHub, not a replacement for any part of it.
Platform, cloud, security & data teams
- Keep their GitHub workflows
- Wrap them as an abstracted service
- Publish a versioned contract
Product & application teams
- Discover services in the Directory
- Subscribe and self-serve
- Compose them in one payload
Unopinionated about your tooling
Zekt doesn't care whether a service is written imperatively or declaratively. Because it sits on top of GitHub, whatever a GitHub Actions workflow can run, a Zekt service can offer — the languages, frameworks and marketplace actions you already use.
A shopping window for central services
The Zekt Directory is where platform teams put their offering on display. Consumers browse it, understand the contract from the Registry, and subscribe — service discovery, tracking and invocation in one place, with the provider approving who gets access.
Self-service without building a platform
No new runtime, no custom API layer, no portal backend to operate. The capability is nothing more than GitHub workflows, wrapped into an abstracted service that others can subscribe to. Your platform team ships products, not plumbing.
Every Service Is a Puzzle Piece — and You Can See the Whole Picture
An orchestration-capable service can itself orchestrate other services. A "new product environment" service might, behind the scenes, call a networking service, which in turn calls a DNS and a firewall service. Each of those is a piece of a puzzle: requestors pick the pieces that fit their needs, and providers can build bigger pieces out of smaller ones.
new-product-env-
1
new-azure-subscriptioncompleted -
2
landing-zone-networkspawns child orchestration completed-
2.1
vnet-peeringdepth 1 completed -
2.2
private-dns-zonedepth 1 completed
-
-
3
new-azure-keyvaultrunning
Visualised end to end
Every orchestration is drawn as a chain graph — requestor, Zekt Action, each step, each service and its outputs — with nested child orchestrations shown inside the step that caused them.
Abstraction that holds
A requestor sees a child orchestration's status, timing and progress — but not the provider's internal service topology. That privacy is exactly what the provider is selling.
Guardrails built in
Nesting is capped at five levels and cycles are rejected at submission, so one service calling back into its own ancestor can't loop forever.
What We Decided to Build — And Not Build
From the start, we were clear about scope. Zekt would not be:
A general automation platform. Zapier and Pipedream do that brilliantly. We're not competing with them. If you need Salesforce-to-Slack, use those tools.
A generic webhook delivery service. Hookdeck, Svix, and Convoy handle arbitrary HTTP webhooks well. We leverage repository_dispatch — GitHub's native event mechanism — because that's what GitHub workflows understand natively.
A CI/CD pipeline. GitHub Actions is your CI/CD. Zekt doesn't replace it. Zekt is the signal that tells your Actions when to run — and, with orchestration, the conductor that tells them in which order.
We started as exactly one thing: the cross-organization event bus for GitHub. Orchestration, the Registry and the Directory grew on that same foundation, because our customers needed them — not because we wanted to become a general-purpose platform. Everything still runs as native GitHub workflows.
The Principles We Build On
Zero-Trust by Default
No shared PAT tokens. No org-level access grants. Consumers subscribe to specific services — providers approve or deny. OIDC-based, no secrets crossing boundaries.
Replay, Not Just Retry
Retrying sends the same HTTP request again. Replay in Zekt means re-dispatching the original event with full payload fidelity — zero structural drift, even months later.
GitHub-Native
We don't abstract away GitHub. We amplify it. Events arrive as native repository_dispatch — your workflows don't need a Zekt SDK, adapter, or special syntax.
Observable Always
Every event and every orchestration step is logged with correlation IDs and timestamps. You can answer "what happened?" without guessing.
Contract-First
Services publish versioned input and output schemas in the Zekt Registry. Change is announced, breaking change is flagged.
Bring Your Own Tooling
Imperative or declarative, any language, any framework — if GitHub Actions runs it, it can be a Zekt service.
Who Zekt Is For
Platform teams
Turn the workflows you already maintain into subscribable products.
- Publish once, serve every team
- Versioned contracts, not tribal knowledge
- Approve who consumes what
- See who uses each service, and how
Product teams
Get what you need in one declarative request — no tickets, no waiting.
- Browse the Directory, subscribe
- Compose services in one payload
- Results back in your own workflow
- Watch the whole chain as it runs
Vendors & partners
Offer automation across organizational boundaries — safely.
- No shared tokens with customers
- Internal topology stays private
- Replay and audit on every call
- Nothing to host beyond GitHub
Where We Are Now
Zekt is live. Teams use it to connect GitHub workflows across organizational boundaries, and to orchestrate chains of services owned by other teams — connecting platform teams to their consumers, vendors to their customers, and internal tooling orgs to the rest of the company.
We're still early, and there's a lot more to build. But the core proposition is working: publish a GitHub workflow as a service, and anyone you approve can discover it, subscribe to it, and compose it with others — securely, in order, and with full visibility.
If you've ever written a curl script to trigger repository_dispatch across orgs — or answered the same infrastructure ticket for the tenth time — and thought "there has to be a better way": we built it for you.
Ready to see Zekt in action?
Stop stitching together scripts. Start offering services.