| 001 | Ports-and-adapters: traits in core, adapters in library crates | Swap any component without touching the others |
| 002 | Hand-written AG-UI 1.0 types instead of ag-ui-core 0.1.0 | The crate predates outcomes and interrupts. Revisit when the ag-ui 1.0 crate is published |
| 003 | graph-flow with all default features off, confined to engine/ and kinds/ | Avoids a second rig-core (0.42) and a second sqlx (0.8). Limits the blast radius of a small dependency |
| 004 | Native connectors by default; Activepieces CE optional with enterprise code removed | Strict open-source requirement, fewer moving parts |
| 005 | OpenTelemetry Collector and Jaeger by default; Opik or Langfuse OSS optional; Phoenix rejected | Elastic License is not OSI. AGPL avoided under the permissive preference |
| 006 | Valkey for Redis and SeaweedFS for MinIO, in optional services only | BSD-3 and Apache-2.0 instead of RSAL/SSPL and AGPL |
| 007 | Qwen3.8-27B and Qwen3-Embedding-0.6B, re-evaluated quarterly | Apache-2.0, vLLM recipes, single-GPU capable |
| 008 | Approval interrupts use reason: "confirmation" | Avoids the client synthesising tool results |
| 009 | Postgres for data, vectors, queue and checkpoints | One stateful dependency in the core |
| 010 | The backend is one Loco app plus framework-free library crates | Loco supplies boot, config, CLI, database, queue, scheduler and auth |
| 011 | Two YAML layers: Loco environment files and config/agents/ definitions | Deployment values vary per environment. Business behaviour is the same everywhere |
| 012 | Workflows are declared in YAML and compiled at boot from a registry of task kinds | A new workflow from existing kinds needs no Rust |
| 013 | Checkpoints in a SeaORM-backed workflow_sessions table | One connection pool, and tenant_id on checkpoints |
| 014 | Loco's Postgres queue runs ingestion and long steps | SSE requests stay short and survive worker restarts |
| 015 | deny_unknown_fields everywhere; boot fails on any invalid definition; JSON Schemas generated | A typo must stop the deploy, never run on defaults |