Skip to main content

1. Goals and non-goals

Goal. Documents come in, structured data is extracted, records are matched in Postgres, a human approves, the result is posted to accounting, and every step is audited. Collections and claims follow-up come after invoices. Every component carries an OSI-approved license, with permissive licenses preferred.

Goals

  • A Loco app plus library crates in which each external dependency sits behind a trait.
  • Behaviour defined in YAML: a new workflow built from existing task kinds needs no Rust.
  • Human approval through the AG-UI interrupt and resume lifecycle, with checkpoints in Postgres that survive restarts.
  • Multi-tenant from day one: a tenant column on every table, Loco tenant helpers, and Postgres row-level security.
  • License compliance and YAML validity enforced automatically in CI.

Non-goals (v1)

  • No hosted SaaS control plane and no billing.
  • No fine-tuning pipeline. The plan uses off-the-shelf open-weight models.
  • No reliance on CopilotKit Intelligence, Activepieces EE, Langfuse EE or SigNoz EE.
  • No visual workflow designer. Workflows are YAML files.

What "everything is YAML configurable" means​

Configurable in YAML, no rebuild: server, logging, database, queue, workers, scheduler, auth, storage, LLM endpoints and models, the model license allow-list, prompts, extraction schemas, workflows (nodes, edges, conditions, retries, timeouts), approval policies, validation rules, connectors and their actions, tools, roles, rate limits, PII and retention rules, telemetry, per-tenant overrides, and the list of agents the web UI shows.

Still Rust code: the implementation of each task kind, connector adapter and port. YAML composes and parameterises them.

Not YAML because the tools require another format: Cargo.toml and deny.toml (TOML) and package.json (JSON). Docker Compose, the OpenTelemetry Collector and GitHub Actions are already YAML.