The persistent primitives that actually matter
Here's what lives in the database in CrewKit. Notice what's missing: there's no agents table at the top of the model. Agents exist, but they're not the abstraction.
Trigger. A normalized entry into the system. Could be a manual request, a scheduled cron, a watch signal on some external state, a webhook, or an approval decision. Every entry into execution is a trigger. This means the same downstream machinery handles "user clicked Start" and "monitoring alert fired at 3am". The system doesn't have to care.
Op. The primary unit of execution. An op carries a goal, ownership, lifecycle state, recovery metadata, and a completion summary. Every meaningful business action maps to an op. If you can't answer "what is this op, why does it exist, who owns it, what state is it in, what's the outcome?" then it shouldn't exist.
Task. Claimable work items beneath an op. Tasks support concurrent execution, lease-based claims, retries, and recovery. Critically: tasks are an execution mechanism, not the top-level product abstraction. We made this mistake early. When tasks become the product surface, you start optimizing for task throughput instead of business outcomes.
Pod. A durable team and policy boundary. A pod owns business scope, budget scope, autonomy scope (full-auto, draft-approve, report-only), and coordination scope. Pods are how you give different parts of the business different trust levels without one global config. The marketing pod can be full-auto for outreach drafts. The finance pod is draft-approve. They don't share budgets or rules.
Specialist. A durable business-aligned role generated from business understanding. Specialists have specs, versions, and materializations. They evolve over time as the system learns. This is the structural adaptation layer.
Evidence. The grounding layer. Every meaningful output is backed by evidence with sources, confidence, and conflict tracking. When two pieces of evidence disagree, the system represents the conflict explicitly rather than picking a winner silently.
Clearance. The explicit human approval boundary. Not a flag on a task. A first-class entity with its own queue, lifecycle, and audit trail.
Outcome. The canonical learning primitive. What actually happened after the work shipped. This is what closes the loop from "we did the thing" to "did the thing work?"
Automation. The proactive trigger-to-action primitive. Watches for conditions and creates triggers. The thing that lets the system act on its own without losing the audit trail. (More on this below. It's bigger than it sounds.)
If you squint, you'll notice this is just a well-structured operational database for a business. That's the point. The reason it works is the same reason any business runs on operational databases instead of email threads: structure is what survives chaos.