Harness principles
Doso is a generalized workflow graph engine. The runtime supplies reusable execution, memory, capabilities, policy, and review; each workflow supplies the definition of the job it needs to perform.
Generalization is the product#
A capability should make sense for people with different tools, data, and goals. Core behavior must not depend on one named workflow, one provider, one file, or one person’s context.
| The harness owns | The workflow owns |
|---|---|
| Graph and DAG execution | The steps for a particular outcome |
| Generic capability and effect contracts | Which capabilities the job uses |
| Discovery, approval, retries, and review | What each step should accomplish |
| Provider-agnostic inputs and outputs | What “done” means for this job |
| Durable run state and provenance | Job-specific constraints and context |
This separation lets the same runtime support many connections and new kinds of work without accumulating provider-specific branches.
The decision test#
Before adding behavior to the engine, ask:
- Would this still make sense for someone with different apps, files, and workflows?
- Does it encode one person’s data or one named workflow into a shared path?
- Could it live in a workflow definition, skill configuration, capability metadata, policy, or user data instead?
If the behavior describes the job rather than the machinery that runs it, it belongs in the workflow.
What good boundaries look like#
Good engine capabilities are generic:
- Fetch the best-matching item, then answer an objective from the result.
- Import any connection record that has an identifier, title, and source URI.
- Infer approval and isolation requirements from a capability’s declared effects.
- Bind a toolkit, objective, and DAG in a workflow definition.
Provider names, document titles, people, prompts for one task, and demo-specific branches belong outside the engine.
Why it matters#
Generalization is not an abstraction exercise. It keeps execution predictable, security policy consistent, and new integrations inexpensive. Doso teaches the harness how to run work safely; workflows carry the recipes.
It also keeps control with you: graphs you build stay portable, connections and CLIs remain yours, hosting can move with your infrastructure, and inference providers can change without rewriting the product.