-
Notifications
You must be signed in to change notification settings - Fork 0
Execution Model
Authoritative rule:
agents/rules/execution-model.md
· Engineer-facing reference:
Ephemeral Blueprints and the Compute-Data Boundary
Before designing any feature, integration, or operational change, measure the proposal against this shape:
- Gateway = gatekeeper only. Session auth, authorisation, SSE / callback delivery, subscription routing. Never reads or writes domain data on behalf of a client.
- Workers = atomic compute blocks. Stateless. Claim a block, hydrate inputs from the shared cache, execute one tool, write outputs to the cache, emit boundary events, release the slot.
- Playbooks = ephemeral blueprints. Control flow and policy for a request. Invoked on demand; no resident state between invocations beyond what the event log records.
-
Shared cache = state vehicle between blocks. Arrow IPC,
scoped to
execution_id+ step. Rebuildable from the event log. - Event log = source of truth. Append-only; immutable. Replay reproduces state for any past time.
Any data touch (read, write, projection, subscription, third- party API) happens inside a playbook step under that playbook's policy block. Clients never reach a database directly. The gateway never reaches a database to satisfy a client request.
- Business-logic credentials (Auth0 / Duffel / Amadeus, tenant DSNs, OAuth secrets, signing keys) live in the NoETL keychain; playbooks reference by alias.
- Platform / runtime credentials (worker's NATS connection, server's signing key) live in pod env / k8s Secrets.
No persistent per-tenant AI-agent processes or MCP servers. Both "AI agent" and "MCP server" are dispatched on demand and release their slots when blocks complete.
A block must not hold a worker slot waiting for an external operation that takes more than a few seconds. Capture the callback subject, return, free the slot, resume on the callback. See Umbrella: Container Tool Callback for the canonical instance.
- Initiates work / gates access / routes responses → gateway.
- Touches data / external API / composes operations under business rules → playbook in catalog.
- Executes a unit of computation → worker tool. Add a new tool kind only if no existing one fits.
- Needs shared state between blocks → shared cache.
- Waits on something external → callback / hook pattern. Never hold a slot for the wait.
Per the authoritative rule:
The shape is the platform's "knowhow" for cost-effective and performance-optimized agentic AI computation.
Concretely:
- No persistent agent infra to monitor or pay for between requests.
- Adding integrations is a catalog row, not a new deployment.
- Workers can be added, removed, or restarted freely without data loss; state lives in the cache + event log.
- Audit, replay, retry, and schema evolution have one home (the playbook policy block).
When reviewing a proposal: "does this honor the boundary?" If not, push back before implementation lands.
- Home — overview
- Repo Map
- Releases
- Sessions Log
- Secrets Wallet (#61) — SECURITY (design)
- Rust Server Port (#49) — PRIMARY
- Decoupled Context + Event Chain (#115) — RFC (design), reframes #101
- Orchestrator Scaling (#101) — reframed by #115; consume side = #115 Phase 1
- Event WAL + Derivable Storage (#104) — Round 01 (locator) PR open
- WASM Plug-in Compilation (#105) — system-pool plug-in hot-reload (ADR Phase 4)
- System Pool Design (#46) — PRIMARY
- Regression Baseline Migration (#98) — e2e
- Subscription / Listener Tool (#90) — RFC
- Container Tool Callback (#43)
- Rust Worker Parity Gaps (#47 · #48)
- Event Envelope Reconciliation (#51 in TaskList)
- Cursor Loop Mode (#100) — server v3.8.0 + tools v3.10.1, 2026-06-15
- Transfer Tool Credentials (#99) — tools v3.10.0 + worker v5.22.0, 2026-06-14
- Explicit Input Binding (#77) — v3.0.0 shipped 2026-06-09
- Rust Worker Migration (#30)
- Python Services → Rust (#45)
- Issue Tracking
- Wiki Convention
- Handoffs
- Deployment Validation
- Execution Model
- Data Access Boundary
- Observability
- noetl/noetl wiki — app + DSL
- noetl/server wiki — Rust control plane
- noetl/worker wiki — Rust pull worker
- noetl/tools wiki — tool registry crate
- noetl/cli wiki — CLI + local mode
- noetl/gateway wiki — gatekeeper
- noetl/ops wiki — Helm + manifests
- noetl/travel wiki — domain SPA reference
- Docs site — engineer-facing architecture