Skip to content
View recertia's full-sized avatar
🎯
Building Recertia no AI agents that prove improvement.
🎯
Building Recertia no AI agents that prove improvement.

Highlights

  • Pro

Block or report recertia

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
recertia/README.md

Recertia

Only memory that still works gets kept.

Public homepage for this project is this repository: github.com/recertia/recertia. Docs: docs/architecture.md · changelog: CHANGELOG.md · contributing: CONTRIBUTING.md.

Recertia is a self-improving agent system for recurring work. It solves a task against locked, machine-checkable criteria, saves what worked as versioned memory, and measures whether that memory actually helps the next time.

It does not improve by updating model weights. It improves by updating how knowledge is stored, retrieved, and re-certified.

Related work: SealedKeep keeps a code or experiment change only when a real evaluation metric improves. Recertia is the memory side of the same honesty rule of retrieve, solve, check, and keep only what still earns its place.

What matters

Retrieve before invent.
Solve always queries memory first. The agent is not allowed to skip straight to invention.

Lock success before you solve.
Criteria are fixed at intake from a structured Goal. They must be able to fail. Natural language is optional context, not the contract.

Version everything.
Skills, facts, and cases change by writing a new version with lineage. There is no silent in-place edit of “what we know.”

Failures are knowledge.
Dead ends are stored and retrieved so the system does not fall into the same hole twice.

Measure with a control arm.
Some runs suppress memory on purpose. “It got better” is only allowed when treatment beats control — not when a transcript sounds confident.

Bound the library.
The active skill set is capped. Weak entries retire on measured contribution. Unbounded growth is not treated as progress.

Do not self-edit the referee.
The agent may not change the machinery that measures or constrains it.

Count what you dispatch.
Fan-in reconciles expected work against received work. Model-scored checks run in a fresh context so the solver cannot grade its own homework.

If you remember one sentence: progress is real only when a run without memory is part of the comparison.

Prove it

The claim that matters is lift: same task class, with memory vs without.

pip install -e ".[dev]"
recertia lift --task-class <name> --trials 10

You should see success (and cost or step counts, when tracked) for the treatment arm and the control arm, plus a delta. The integrity ledger records both.

Lift is measured, not guaranteed. Some task classes will not improve. That result is still useful — it means the library did not earn its keep on that class.

Seed skills live under skills/. Golden evals live under evals/. Open empirical claims are tracked in docs/assumptions.md.

Try it

Python 3.11+.

pip install -e ".[dev]"

# preferred entry: structured Goal -> locked criteria
recertia run --goal goal.json

# inspect / resume / verify
recertia runs show <run_id>
recertia resume
recertia ledger verify

# library
recertia skills search <query>
recertia skills lint
recertia skills promote <skill_id>

HTTP API: POST /v1/runs (install with pip install -e ".[api]"). Issue keys with recertia keys.

Execution backend. Production solves default to an OCI container (RECERTIA_EXECUTION_BACKEND=container). Install Docker or Podman, then:

export RECERTIA_EXECUTION_BACKEND=container
python3 scripts/smoke_container.py

For local development only:

recertia run --goal goal.json --local-exec

Models. Unscripted solves need a real provider; the stub leaves the model unset on purpose so empty config fails loud. Anthropic, OpenRouter, and other OpenAI-compatible gateways are documented in docs/architecture/go-live.md. Keep keys out of the repo.

Offline jobs and retention:

recertia jobs run curator --dry-run
recertia gc --older-than-days 14

Policy defaults live in policy/default.json.

How a run works

                    ┌─────────────┐
                    │  Goal / API │
                    └──────┬──────┘
                           │
                           v
┌─────────────────────────────────────────────────────────┐
│  EXECUTION (one request)                                 │
│  intake → retrieve → plan → solve → validate             │
│              │                         │                 │
│              │                    pass / fail            │
│              │                         │                 │
│              │              distill or dead end          │
└──────────────┬─────────────────────────┬────────────────┘
               │                         │
               v                         v
┌─────────────────────────┐   ┌──────────────────────────┐
│  MEMORY (durable)        │   │  IMPROVEMENT (scheduled)  │
│  skills · facts · cases  │◀──│  curate · practice        │
│  utterances · policy     │──▶│  re-certify → quality gate│
│  versioned, reversible   │   └──────────────────────────┘
└───────────┬────────────┘
             │
             v
      ┌─────────────┐
      │ control arm │  same tasks, memory off → measure lift
      └─────────────┘

Compounding happens across runs, through durable memory that later runs read before inventing. Offline jobs (refine, evolve, practice, distill) reorganize and re-certify that memory on a schedule. Promotion always passes a quality gate.

Three planes stay separate on purpose:

Plane Lifetime Role
Execution One request Bounded graph walk; never learns in place
Memory Durable Versioned skills, facts, cases, utterances, policy
Improvement Scheduled Curate, practice, re-certify; gate before store

Keeping them apart is what stops “self-improving” from meaning “one long process you have to trust.”

Primary input is a structured Goal of outcomes and constraints, compiled to locked TaskCriterion[] at intake. Details: docs/specifications/goal-objects.md.

This is not

  • A fine-tuning or weight-training loop
  • An unbounded autonomous agent
  • A chat log you are expected to believe
  • A promise that every task class will show positive lift
  • An MIT-licensed free-for-commercial product

Validate it on your own workload before you rely on it.

Status

Built and under test:

  • Contracts-as-code in contracts/ (source of truth) with generated schema/
  • Graph runtime with budgeted loops and explicit failure signals
  • Plural memory planes, promotion gates, and control-arm lift measurement
  • Container sandbox for production solves; --local-exec for development
  • CLI (recertia) and optional FastAPI surface
  • CI on every push

Research outcomes that are still open are listed in docs/assumptions.md, separate from engineering acceptance gates.

License

PolyForm Noncommercial 1.0.0 (PolyForm-Noncommercial-1.0.0). Personal use, research, experimentation, and use by many noncommercial organizations are permitted. This is not MIT. Commercial production use requires a separate license from the copyright holder.

Copyright (c) 2026 Robert Schmidt. See NOTICE.

More detail

Doc When you need it
docs/architecture2.md All-in-one architecture + specifications (downloadable compilation)
CHANGELOG.md What changed
docs/brand/README.md Logo and mark
docs/architecture/overview.md Planes, memory taxonomy, governance
docs/architecture/go-live.md Model credentials, jobs, retention
docs/architecture/container-sandbox.md Docker/Podman setup and hardening
docs/specifications/goal-objects.md Goal as primary input
docs/adr/ Architecture decision records
contracts/ Normative Pydantic models
docs/references.md Literature grounding
docs/assumptions.md Empirical claims still under test
CONTRIBUTING.md Dev setup, CI checks, how to send a change
SECURITY.md Vulnerability reporting

Popular repositories Loading

  1. everything-claude-code everything-claude-code Public

    Forked from affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    JavaScript

  2. Kronos Kronos Public

    Forked from shiyu-coder/Kronos

    Kronos: A Foundation Model for the Language of Financial Markets

    Python

  3. agency-agents agency-agents Public

    Forked from msitarzewski/agency-agents

    A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas, from whimsy injectors to reality checkers. Each agent is a specialized expert with personality, processes…

    Shell

  4. colibri colibri Public

    Colibri

    C

  5. sealedkeep sealedkeep Public

    SealedKeep Only real improvements survive.

    Python 1

  6. recertia recertia Public

    Recertia is a self-improving agent system. It solves tasks and distills what worked into reusable memory, getting faster and more reliable at similar tasks over time. Non-Commercial License. Never …

    Python