Documentation

Understand the model and get started.

Erin is a work board where humans and AI agents deliver together. This documentation covers the mental model, every part of the product, and the complete reference.

The Erin Task waitlist is open. These guides describe the product; access will be by invitation. Learn how to request your invitation.

Code samples and example data are preserved in their original language so that identifiers and technical contracts remain unchanged.

What is Erin?

A work platform where part of the team consists of AI agents. People prepare and decide, agents execute, and every decision is recorded from requirement to delivery.

Think of a familiar task board, with one difference: you can assign a task to a person or an agent in the same way. The agent does the work, an independent reviewer evaluates it, and the deliverable stops at a human decision point before acceptance. Everything that happens becomes a record no one rewrites.

Erin is organized into three layers: Structure (org, teams, people, and agents), Work (the board), and Execution (what runs when a task is assigned to an agent).

What you can do

Erin is not a chat assistant. You delegate a complete unit of work, with a contract and acceptance criteria, and get a deliverable backed by evidence. These are the use cases teams run today.

Research

Research with cited sources

“What are the retention periods for each data category under Brazil's LGPD?” The agent consults the domain KB and cites documents by ID and hash. The answer comes with provenance, not just the model's memory.

Discovery

Break an epic into executable work

Describe the objective. The agent proposes stories and tasks, and the system matches the item against the knowledge collection to identify which KBs cover the topic and where knowledge is missing. Your approval creates the child items.

Construction

Implement against an approved Spec

With the contract agreed, the executor produces the artifact and a validator reviews it in a fresh context, without seeing the executor's conversation. If it fails, the review guides the next attempt.

Review

A second opinion, not an approval

A reviewer measures the deliverable against the acceptance criteria and reports the result. It never decides. Approval remains your click, with the review alongside it.

Knowledge

Build your domain KB

What the company knows but has never written down becomes a searchable, versioned KB with freshness tracking. Every future consultation is recorded, and that provenance makes deliverables auditable. The agent improves through golden cases harvested from your gate decisions.

Batch

Factory Shift

Scheduled work runs outside business hours under the same gates and cost limits. In the morning, your queue shows what needs a decision, not just what ran.

A complete cycle, from request to golden case

The example below shows a real Flywheel cycle. Notice who acts at each step: when it is you, when it is the agent, and what gets recorded.

StepWho actsWhat happensChain event
RequestYouCreate the epic “Align data retention with the LGPD”.no event: the first one comes from the first real action
DiscoveryAgentPropose 4 stories. The system matches the item against the collection, identifies an existing compliance KB, and flags a knowledge gap in data deletion.kb.suggested
ApprovalYouApprove the decomposition. The child items are created as real work.gate.decided
KnowledgeAgentAuthor the missing documents with cited, verified sources.kb.document_ingested
RefinementAgentConsult the KB and write the first task's Spec, grounded in the documents read.kb.consulted
ContractYouApprove the Spec, answering the blocking questions in the KB charter.spec.approved
ExecutionAgentAssigning the task to the agent triggers the engine. The executor produces; the validator reviews in a fresh context.agent.executed
VerdictYouThe deliverable awaits your decision, alongside the output, review, and KB charter.gate.decided
LearningYouYour decision becomes a golden case, harvested from the chain in one click. It is used to evaluate the next agent version.golden_case.harvested
Why the last row matters. Without it, the cycle is just automation. The golden case comes from your real decision, not a purchased dataset. It lets you say “agent version 2 gets more deliveries right the first time than version 1” with evidence instead of faith.

From zero to your first delivery

The path every team takes. Each step corresponds to a product screen.

  1. Set up your space.On first access, create the founder and follow the wizard to set up the Org, Workspace, Team, and Project.
  2. Prepare the team.Add people with their roles and explore the native agents: Planner, Researcher, Executor, and Reviewer.
  3. Provide knowledge.Create or link a domain KB. The agent consults it before acting, and each consultation is recorded.
  4. Create and refine work.Epic, story, task. The refinement agent reads the KB and proposes the Spec (the contract); you approve it at the gate.
  5. Assign it to an agent.Assignment is the execution trigger. The executor does the work, the validator reviews in a fresh context, and the loop corrects it if needed.
  6. Decide at the gate.The deliverable awaits your verdict, with the output and evidence alongside it. Approve it or send it back with guidance.
  7. Scale with Factory Shift.Once you trust the agents, create batches that run overnight with a cost limit. In the morning, the gates await you.

Structure and roles

The hierarchy organizes who works on what: Org contains Workspaces, which contain Teams, which have Projects. People and agents are members of a team.

Roles define what each person can do in a workspace. Ready-made presets include Admin, Manager, Approver, Executor, and Reader, and you can create your own. A role in use cannot be removed before its members are reassigned. Gate approval permission (gate.approve) separates decision-makers from observers.

Work on the board

Work follows a hierarchy: epic, story, task and subtask. Only tasks and subtasks can be executed by an agent; epics and stories are organizational containers.

A task moves through well-defined states: rascunho, pronta, na fila, executando, suspensa, bloqueada por gate and concluída or falhou. Only allowed transitions can occur, and changing state during execution is blocked.

You can define dependencies between items: a task that depends on another cannot be assigned until the first finishes. “B waits for A” is a real block, not just text.

Discovery, refinement, and the Spec

There are two ways to develop work until it is ready for execution.

Discovery (decomposition)

A large epic can be assigned to a discovery agent, which proposes a tree of work items. Review it at the decomposition gate, edit it if needed, and approve it to create the child items. Proposed priorities, dependencies, and criteria are preserved.

Refinement (producing the Spec)

The Spec is the contract for a specific task: scope, output contracts, and acceptance criteria. A refinement agent consults the KB and drafts a domain-grounded Spec. You approve it at the gate. A good Spec enables reliable execution: it is the most important task before any agent runs.

A KB is not a Spec. The KB is reusable domain knowledge (the reference book). The Spec is the contract for a specific task (the work order). Refinement consults the KB to produce the Spec.

Knowledge (KB)

The domain knowledge collection an agent consults before acting. It is the product's moat.

A KB is a collection of structured documents (concepts, patterns, references) about a technology or domain. Native KBs are curated and shared by Erin; workspace KBs belong to you. An agent can only see KBs visible to its tenant.

  • Real consultation. When an agent consults the KB, the cited document is recorded with its hash and relevance. This proves which knowledge informed the deliverable.
  • Assisted authoring. An agent can draft KB documents from verifiable sources, with citations and verification.
  • Publication and freshness. A KB version is published through human approval and becomes an immutable snapshot. Aging content is marked as stale and blocks publication until reviewed.

Agents

Agents are team members that execute tasks autonomously under your rules.

There are four native functions. Each agent declares its behavior, limits, stop conditions, and output contract.

Function

Planner

Decomposes and organizes work into an executable tree.

Function

Researcher

Consults knowledge and produces grounded material with sources.

Function

Executor

Performs the task against the approved Spec using linked tools and KBs.

Function

Reviewer

Reviews the deliverable in a fresh context. Cannot use the same model as a producer.

Immutability, versions, and promotion

  • Native agents are immutable. To adapt a native agent, fork it. The original never changes.
  • Every change creates a version. The version and model are recorded in the chain. You can see each version's history and performance.
  • Evidence-based promotion. A candidate version cannot be dispatched. It is promoted when evaluations and gate signals demonstrate its value.
  • Composition. An agent definition can declare the subagents it orchestrates (for example, executor and reviewer). Invoking the agent triggers this composition deterministically.

Providers and BYOK

Use your own AI provider (BYOK, bring your own key). Each agent defines its provider and model, with an optional fallback chain for provider failures.

  • Multiple connections (keys) per provider, with friendly labels. Support for Anthropic, OpenAI, Gemini, Groq, DeepSeek, Moonshot, OpenRouter, and more.
  • The key stays in the vault. The interface receives only a safe reference, never the secret.
  • Inference costs are charged to your account, transparently broken down by agent, model, and task.

The single trigger

There is only one way to trigger execution: assign a task to an agent. No accidental execution, hidden scheduling, or agents deciding to run themselves. This keeps operations predictable and auditable.

The execution engine

When a task is assigned to an agent, a deterministic engine (not an LLM deciding control flow) coordinates the cycle:

  1. The executor produces.The assigned agent works against the Spec, consulting linked KBs.
  2. The validator reviews.A reviewer evaluates the output in a fresh context, separate from the producer. The executor never reviews itself.
  3. Corrective retry.If the reviewer rejects it, the review becomes feedback for the next attempt. The default is 2 attempts, configurable.
  4. Cost limit.Every run has a mandatory limit. The loop continues until approval, the cost limit is exceeded, or attempts are exhausted.
  5. The gate opens.Once internally validated, the deliverable stops at the gate and awaits a human decision.
Cost and performance are measured by the server, not entrusted to the agent. A low-cost model runs by default; a stronger model is used only as a declared per-invocation fallback.

Gates and decisions

A gate is a human decision point. An agent or the system may open a gate; the decision always belongs to a human with permission. An agent never approves.

  • Evidence Summary. At the gate, you see a verifiable summary of what happened: the output, reviewer score, cost, consulted KBs, and chain integrity. The same evidence you would download in the complete dossier.
  • Maker-checker. N-of-M approval policies and separation of duties can be required by workspace. Violations are recorded.
  • Effects by type. Approving a Spec makes the task ready; approving decomposition creates the child items; approving a deliverable completes the task. Rejection sends it back with guidance for the next assignment.

Factory Shift

Autonomous batch execution, once you trust your agents.

Instead of assigning one task at a time, create a batch: choose the project, select ready tasks, choose the executor agent, and dispatch. Execution respects your configured overnight window and limits.

ControlWhat it does
Overnight windowDefines when the factory can run (by workspace and time zone). Outside that window, tasks wait in the queue.
Daily budgetAn aggregate daily cost limit. Once exceeded, the shift pauses until tomorrow.
Auto-pauseIf the day's error rate exceeds a threshold, the workspace pauses automatically. A human must resume it.
RequeuingAn item that fails due to an interruption can return to the queue, with a lifetime attempt limit.
Morning digestA summary of overnight activity, with an optional signed webhook.
The audit trail stays on at all times. Nothing runs overnight without being recorded.

The Flywheel

The cycle that builds trust with every turn.

Build easily, execute well, decide with evidence, learn from golden cases and evaluations, promote the version that proves its value, then trust and delegate more. The north-star metric is first-pass approval: the fraction of deliverables approved at the gate without retry or rejection. It measures confidence in delegating at scale.

  • Golden cases come from good gate decisions harvested from the chain. They become the evaluation baseline.
  • Evals run against golden cases. They fail closed: without reliable evidence, they do not inflate the score.
  • Promotion requires evidence. Regressions block it; an override requires a recorded justification.

The audit chain

The foundation that keeps the flywheel honest.

Every human or agent action becomes an event in an append-only record. Events are hash-linked and ordered, so nothing is rewritten afterward. Golden cases, evaluations, costs, and the trust scorecard are all derived from it.

  • Reproducible. “Why did we decide this way?” is answered by consulting the chain, not digging through disconnected histories.
  • Exportable. Export the verifiable chain and a hash-sealed Evidence Pack containing the Spec, gates, actors, versions, KB references, and cost.
  • Integrity. The server can recompute the hash chain at any time to prove it has not been tampered with.

Security

  • Tenant isolation. A workspace never sees another workspace's data. Sensitive tables have two layers of isolation.
  • Secrets in the vault. The BYOK key is encrypted in a vault, never exposed in logs, the database, or plain text.
  • Immutable record. The chain is protected against modification and deletion at the database level, not just in the application.
  • Scanning before writing. Content is scanned for secrets and personal information before it becomes a chain event.
Regulated-grade hardening (managed KMS, microVM execution, mTLS, and a signed remote runner) is the workstream for the first fintech customer in production.

Guide: build an agent

An agent is more than a name, prompt, and model. It is a versioned behavior contract.

Fork a native agent or start from scratch. Each version declares:

FieldWhat it defines
FunctionPlanner, Researcher, Executor, or Reviewer. Taken from the agent definition, it governs participation in the composition.
System promptThe role and method. In KB-grounded flows, if left empty, the system injects a prompt requiring KB consultation before acting.
Provider and modelThe connection (key) and model. Start with a low-cost model; use a stronger one only where needed.
FallbackAn alternative provider/model per invocation for provider failures. This is not model escalation during retries.
Tools and connectorsWhat the agent can call (KB search, HTTP/MCP connectors with least-privilege policies).
Linked KBsThe knowledge it consults. Without a KB, it only has the model's memory.
JudgeThe reviewer's evaluation profile. The reviewer cannot use the same model as a producer.
CompositionThe subagents it orchestrates (e.g., executor + reviewer). Declared and deterministic.
AgentSpecLimits, stop conditions, escalation, quality gate, and expected output contract.
Every edit creates a new version. The version and model are recorded in the chain. A candidate cannot be dispatched: it is promoted when it proves its value.

Guide: build a KB

A good KB separates an agent that gets things right from one that guesses. This guide builds one from scratch, with real content from end to end.

  1. Create the KB.Set a slug, technology, and domain. Native (shared by Erin, read-only) or owned by your workspace.
  2. Add documents.The content types are concept, pattern, reference and spec. An index and a quick_reference provide navigation.
  3. Write the charter.Boundaries, discovery questions, and scope limits. This is what you see when making a decision.
  4. Author with sources.For assisted authoring, the agent needs an authorized source connector. The content is cited and verified, not generated from model memory alone.
  5. Pass readiness checks.A minimum structure (index, concept, and pattern) and sufficient coverage. An incomplete KB can still be queried, but can only be published when ready.
  6. Publish.A version is published through human approval and becomes an immutable snapshot. A stale document blocks publication.
  7. Link it to the agent.A KB is actually consulted only when it is bound to the agent version and the search tool is enabled.

Example: the “LGPD: Retention and Deletion” KB

Let's build a compliance KB that a research agent will consult before writing any Spec about personal data.

1. The anatomy. A KB is a Markdown tree. The directory defines the document type, so the structure is also the taxonomy:

kb_lgpd_retencao/
  index.md                          # navegação: o mapa da KB
  quick-reference.md                # navegação: a cola de consulta rápida
  concepts/
    direito-esquecimento.md         # concept: o que é e por que importa
  patterns/
    expurgo-com-trilha.md           # pattern: como se faz na prática
  reference/
    bases-legais-retencao.md        # reference: a tabela que se consulta

2. A real document. Each file starts with a header the system reads. The Purpose has twice the weight of the body in search ranking, second only to the title, so write it carefully:

# Bases legais de retenção por tipo de dado

> **Purpose**: Quanto tempo cada categoria de dado pode ser retida e sob que base legal
> **Confidence**: 0.92
> **Fonte**: Lei 13.709/2018, arts. 7 e 16

## Overview

Retenção segue a finalidade e a base legal. Dados fiscais e contábeis
seguem prazos setoriais próprios. Dados de marketing caem com a
revogação do consentimento.

## Regra prática

| Categoria   | Prazo mínimo | Base legal                    |
|-------------|--------------|-------------------------------|
| Fiscal      | 5 anos       | obrigação legal (art. 7, II)  |
| Cadastral   | vigência     | execução de contrato          |
| Marketing   | nenhum       | consentimento (revogável)     |
Why the format matters. Search works on whole documents, not isolated chunks: ranking selects documents, not excerpts. The agent receives the document (with its body truncated if too long) and cites its ID and content hash. That hash lets you reconstruct, byte for byte, exactly what it read when making the decision.

3. The charter. This is the part most people skip, and the one that pays off most. The charter is not an execution-blocking guardrail: it is the context you see when approving, and what forces refinement to resolve open questions before proposing a contract.

ElementReal exampleEffect
Boundary
block
“Tax records have a statutory minimum retention period. Deletion before that date is blocked.” Highlighted at the gate. This is the rule you do not want to discover after an incident.
Boundary
warn
“Every deletion must record its legal basis in the chain event.” Shown as a warning, without blocking the decision.
Question
blocking
base_legal: “What legal basis supports retention for each category?” Spec approval is unavailable until this question is answered.
Question
standard
titular_solicitou: “Is there an outstanding deletion request from the data subject?” Provides decision context without blocking.
Scope
boundary
“International data transfers” points to gdpr_transferencias When a topic falls outside the domain, the system redirects instead of letting the agent invent an answer.

4. Proof it worked. When an agent consults the KB during work, a chain event is created. It stores the question and the exact reference, never the document body:

{
  "event_type": "kb.consulted",
  "payload": {
    "query": "prazo de retencao dado fiscal expurgo",
    "refs": [{
      "kb_slug":      "lgpd_retencao",
      "doc_slug":     "bases-legais-retencao",
      "kind":         "reference",
      "content_hash": "9f2c...",     // reconstrói o que ele leu
      "snapshot":     3,             // a versão publicada
      "score":        0.61,
      "confidence":   0.92
    }]
  }
}
The numbers that make the case. In an end-to-end test, two sibling items in the same epic were refined. Without a KB consultation, the Spec contained 305 characters of unstructured questions. With the KB in the flow, the sibling's Spec contained 6,090 characters structured into problem, objectives, risks, and criteria, backed by 4 recorded consultations. The difference was not a better model. It was knowledge in the right place.

Best practices

  • Invest in the Purpose of each document: it has twice the weight of the body in search and determines whether the agent finds what it needs.
  • Prefer verifiable sources over text from memory. A hash-backed citation is the evidence.
  • Write the charter alongside the documents. One well-placed blocking question can prevent an entire flawed Spec.
  • Keep the KB fresh: review aging content before publication.

Avoid

  • Linking a KB and forgetting to enable the search tool: the binding does nothing and fails silently.
  • A huge, generic KB. Prefer focused domains that can be reused.
  • An empty charter. Without boundaries and questions, the gate becomes a rubber stamp.
  • Reusing an ingestion KB in a research flow without checking its fit.

Guide: write a good Spec

The Spec is the contract. A well-defined Spec makes a reliable loop. A vague Spec guarantees rework.

A strong Spec has three parts, all verifiable:

  • Scope: what is included and what is excluded. Ambiguity here leads to rejection at the gate.
  • Output contracts: the format and guarantees of the result (what the deliverable must contain and how it will be checked).
  • Acceptance criteria: an objective checklist the reviewer uses to evaluate. If a human cannot determine pass or fail from a criterion, it is too weak.

The same request, written two ways

Weak Spec

  • “Implement a routine to delete old data in accordance with the LGPD.”
  • Does not say which categories are included.
  • Does not say what happens to data subject to mandatory retention.
  • Does not define the output format or how to check it.
  • The reviewer cannot reject it without relying on opinion, so everything becomes a debate at the gate.

Strong Spec

  • Scope: customer records and marketing categories. Tax records are excluded, with a 5-year statutory retention period.
  • Contract: an idempotent script plus a report by category with counts, legal basis, and cutoff date.
  • AC 1: no record subject to an active statutory retention obligation is deleted.
  • AC 2: every deletion records its legal basis in a chain event.
  • AC 3: running twice produces the same result.
  • AC 4: a test fails if AC 1 is violated.
Test the criterion. Read each acceptance criterion and ask: would two different reviewers reach the same verdict from this alone? If not, it is still an opinion disguised as a contract.

Let refinement consult the KB and ground every part of the Spec in the domain. Where the KB imposes a blocking constraint, make it explicit in the contract: AC 1 above turns the LGPD KB boundary into a verifiable criterion. Producing the best possible Spec is the refinement agent's central task.

Guide: configure Factory Shift

Configure each workspace in Settings, under the Factory Shift tab:

# exemplo de política noturna
Janela        22:00 → 06:00   # fuso do workspace; pode cruzar a meia-noite
Orçamento     US$ 20 / dia     # estourou, pausa até amanhã
Auto-pausa    ≥ 30% de erro    # amostra mínima antes de agir
Re-enfileirar 1x               # teto de tentativas por task
Digest        webhook assinado # resumo matinal do que rodou
Concorrência  configurável     # quantas tasks em paralelo

Then create the batch at /lote: choose the project, select ready tasks and the executor agent, and optionally set a “not before” time. Each task keeps its own assignment record; nothing in a batch approves a deliverable.

Guide: gate policies

The gate is always human, but you define the rigor for each workspace.

  • Maker-checker. Require N distinct approvers and separation of duties (the executor cannot approve). Violations are recorded.
  • Assignment preflight. Before the trigger, the system anticipates issues (required Spec, KB, connection/key, provider/model, judge, composition). Warnings do not block by default.
  • Policy-based blocking. The workspace can turn selected warnings into hard blocks. For example, preventing assignment without a KB.

Best practices

Do

  • Invest in the Spec. It is the biggest driver of first-pass approval.
  • Start with a low-cost model. Use a stronger model only where the evidence shows it is needed.
  • Keep the reviewer independent. Always use a different model from the producer.
  • Promote with evidence. Promote the version backed by evaluations and gate results.
  • Enable Factory Shift gradually. Start with a short window and a small budget.

Avoid

  • A high, fixed retry count. The default is 2; corrective, not blind.
  • Using a strong model everywhere. Expensive and unnecessary for most tasks.
  • An agent as coordinator. Code coordinates execution, not an LLM at runtime.
  • The executor reviewing itself. Always use a reviewer in a fresh context.
  • Running without a cost limit. Every run has a mandatory limit.

Technical reference

Task states and transitions

Execution states follow an allow-listed state machine. Planning transitions (rascunho and pronta) have their own authority and do not go through it.

rascunho  → na fila           # atribuição (gatilho único)
pronta    → na fila           # atribuição pós-refino
na fila   → executando        # o worker reivindica
executando→ bloqueada por gate # abre o gate
bloqueada → concluída          # humano aprova
bloqueada → pronta / na fila   # recusa ou reatribuição
qualquer terminal → na fila    # re-disparo é re-atribuir

Chain event types

Each action creates a typed event. The main types:

  • task.assigned, task.started: the trigger and the start.
  • kb.consulted: KB consultation, with the cited document, hash, and relevance.
  • agent.model_invoked: a model invocation, with cost re-derived by the server.
  • agent.tool_called: a tool call, with arguments and result.
  • agent.executed, agent.validated: the output and the reviewer's assessment.
  • gate.opened, gate.decided: opening the gate and the human decision.
  • work_items.materialized: the child items created when a decomposition is approved.

Stack

Python backend with FastAPI and PostgreSQL. Orchestration uses a Postgres queue and an asynchronous worker, without Temporal or Celery in v1. Agents use a custom harness with native provider tool calling, rather than orchestration frameworks as the backbone. Secrets stay in a vault. Database triggers protect the chain, providing defense in depth beyond the application.

The invariants

The rules the system guarantees. Each has a test that fails if it is violated.

RuleWhat it guarantees
1Assigning a task to an agent is the only execution trigger.
2Every action by any actor creates an immutable, append-only chain event.
3Agents never approve. Gate decisions are always human.
4Native agents are immutable. Editing means forking.
5Every agent change creates a new version; the version and model are recorded in the chain.
6The customer's key stays in the vault, never in plain text.
7The system never decides architecture on its own. The agent suggests; the human decides.

Glossary

Workspace

A team's workspace, with its projects, agents, KBs, and policies.

KB

Reusable domain knowledge that an agent consults before acting.

Spec

A task's contract: scope, output contracts, and acceptance criteria.

Gate

A human decision point. Approve or return a deliverable, Spec, or decomposition.

Event

An append-only record of an action in the audit chain.

First-pass approval

The north-star metric: deliverables approved at the gate without retry or rejection.

Factory Shift

Batch execution during the overnight window, with a cost limit and auto-pause.

Flywheel

The cycle of learning and building trust through evidence, version by version.

Frequently asked questions

Can an agent approve a deliverable on its own?

No. Approving a gate is always a human decision made by someone with permission. This is a tested rule, not a setting.

Do I need to switch my work tool?

No. Erin is a task board with agents on the team. Anyone familiar with Jira or ClickUp can find their way quickly; the difference is that part of the team is AI.

Who pays for the AI?

You do. Use your own provider (BYOK); your key stays protected and inference costs are yours, transparently broken down by agent and model.

How do I know whether I can trust an agent with more?

Through first-pass approval by version and evaluations against golden cases. Trust grows with evidence, not faith.

How does overnight execution work?

Create a batch during the day; the factory runs during the workspace's overnight window, with a cost limit and auto-pause. In the morning, the deliverables await your gate decisions.

Can I prove how a decision was made?

Yes. Every step is recorded in the chain. Export a hash-sealed Evidence Pack containing the Spec, gates, actors, versions, and cost.