Private beta · requesting access

Write a ticket.
Watch it ship.

Diad turns a plain-English ticket into a sequenced plan, real code, and a draft pull request — reviewed by you before anything merges.

First-look access for early signups.

You're on the list — we'll be in touch soon.

DIA-241 · projects/api-gateway
Ticket Add rate limiting to /api/tickets — 100 req/min per org, return 429 with Retry-After.
Diad plans the work
DOC
Document the rate-limit policy
written to docs/rate-limits.md
CODE
Add rate-limiter middleware
drafting change
lib/rate-limit.ts
+ export async function checkRateLimit(orgId: string) {
+ const key = `rl:${orgId}`;
+ const count = await redis.incr(key);
+ if (count === 1) await redis.expire(key, 60);
+ return count <= 100;
+ }
ORG
Flag orgs that breach threshold
queued
3
task types — DOC, CODE, ORG — sequenced per ticket
1
approval gate. every task passes through it before it counts as done
0
auto-merges. code always lands as a draft, never straight to a branch
Watch it happen

The mock above, running for real.

A ticket going in, a plan coming out, and a draft PR landing in the repo — captured straight from the product.

diad · live capture
How it works

Four steps. No template fields.

You
+
Diad
=
One flow

Every ticket moves through the same four steps, in order — nothing skips the queue, nothing merges early.

01

Describe

Plain English, in a normal conversation. No forms, no dropdowns, no required fields you don't have answers for.

02

Plan

Diad breaks the ticket into ordered tasks — docs and unblockers first, implementation once the ground is set.

03

Execute

Docs get written straight into your repo. Code opens as a draft PR. Nothing lands directly on a branch you didn't choose.

04

Review

Approve, reject, or regenerate any task. Diad replans around your call instead of starting the ticket over.

Every task is a draft until you say otherwise.

Knowledge

It already knows your codebase.

Every plan is grounded in what you've actually built — your docs, your architecture decisions, your existing code — not a generic guess. Each task shows exactly which source informed it.

"Add rate limiting to /api/tickets" — grounded in:
ADR-0031 — API throttling strategy
lib/session.ts — org resolution, line 42
docs/architecture.md — Redis usage
Stack

Fits where you already work.

Connect once. Diad opens PRs on your repo, posts updates where your team already talks, and respects who's allowed to see what.

Slack

Ticket status and task completions land in the channel your team is already in.

SSO

OIDC login for Okta, Azure, or Keycloak — access follows your own identity provider.

Webhooks

Fire a request when a pipeline completes and pipe it into whatever you've already built.

FAQ
Does it ever merge code on its own?+

No. Every code task lands as a draft pull request. A human on your team has to open it and approve it before anything merges.

What if it gets a task wrong?+

Reject it or ask Diad to regenerate. It replans that task with your feedback instead of restarting the whole ticket.

Which repos can it touch?+

Only the ones you connect. You set the repo and base branch per project in settings — nothing outside that scope is reachable.

Is my code used to train anything?+

No. Your code is used to answer your tickets, not to train models.