Skip to content
Agents for Humanity
Public draft. All results are preliminary desk assessments against criteria v1.0, updated 27 Sept 2026. No agent has been certified yet. How we assess
Open sourceself-hostedMIT

ADF

Rawl · github.com/christianbalevski/adf

ADF stores an agent's config, instructions, memory, loop history, code, sealed credentials and Ed25519 identity key in a single SQLite file. It runs on an MIT-licensed Electron, daemon or CLI runtime with any model provider, including local endpoints. It scores strongly on portability, transparency, modifiability and control, and its portable DID, signed ALF messages and message ids recorded on both sides meet tests that most runtimes fail. Edits to its action record are not detectable, actions proceed when recording fails, and reproducible builds are not documented.

Strengths
  • Whole agent in one documented SQLite file; export is a file copy
  • Portable Ed25519 did:key identity; ALF messages signed by default
  • Every system prompt and dynamic instruction persisted to the loop
  • Agents cannot write adf_ system tables; restricted tools gated by owner approval
  • Any provider, including local OpenAI-compatible models; no license checks
  • Integration credentials sealed in the file and portable with it
Gaps
  • Edits to the action record are not detectable, so there is nothing to verify independently
  • Actions proceed when the loop write fails
  • Hot-path lambda activity only in a capped, trimmed log table
  • Outbound allow/block lists enforced only for same-runtime peers
  • Hourly update check in packaged app with no opt-out
  • Reproducible builds not documented
Evidence

All 34 findings

christianbalevski/adf main at commit beed74e (2026-09-26), ADF Studio 0.7.2, ADF spec v0.2 (storage schema 30) and ALF spec v0.1; default configuration.

Portable · Can you leave, and take the whole agent with you?

100%
  • P1
    Round-trip portability

    In Studio the owner saves the agent as one .adf file (Share, then Save copy, or drag it out) and restores it on another machine by opening or dragging in that file. Provider keys, channel and MCP credentials can be stored encrypted in the file, so the copy runs with no further setup. Shared copies deliberately leave out the owner's signing identity, which moves only when the owner migrates their own agent.

    Pass
  • P2
    Complete export

    The single `.adf` file carries config, primary document and mind.md, files and code, loop history, inbox/outbox, timers, tasks, logs, audit snapshots, the sealed Ed25519 identity key and sealed credentials, so everything that defines the agent leaves with it. Installed MCP packages, container images and app-level provider keys belong to the runtime and are not included.

    Pass
  • P3
    Independent execution

    The MIT-licensed runtime runs as the Electron Studio, a headless daemon or a CLI, and accepts any OpenAI-compatible endpoint such as Ollama or LM Studio, so no Rawl server is required.

    Pass
  • P4
    Identity continuity

    Peers can verify continuity without Rawl: the agent's did:key comes from an Ed25519 key that travels sealed inside the file, so when the same owner imports their mnemonic on a new machine the agent keeps its DID and signing key. A file opened by a different owner must be re-keyed to a new DID.

    Pass
  • P5
    No kill switch

    No license check or remote enablement flag was found in the source. The packaged app checks GitHub Releases for updates but downloads only when the user clicks, and unpackaged builds never check.

    Pass
  • P6
    Capability independence

    Tools, triggers, timers, messaging, memory and lambdas are executed by the runtime and stored in the file, and no provider-native tools are used. Swapping to another provider, including a local OpenAI-compatible model with tool calling, keeps the same capability set.

    Pass

Transparent · Can you see everything the agent is, with ordinary tools?

92%

Auditable · Can you reconstruct exactly what the agent did?

70%
  • A1
    No unrecorded actions

    Each loop entry, including tool calls, is written to `adf_loop` as it happens, and loop clears and compactions archive rows in the same transaction as the delete. Actions still proceed when recording fails: a failed loop write is buffered for retry while the turn continues, and hot-path lambda actions are recorded only in the capped log table.

    Partial
  • A2
    Tamper evidence

    Edits to or deletions from `adf_loop`, `adf_audit` or `adf_logs` cannot be detected, because rows carry no hashes, chaining or signatures, and a tamper-evident event log is deferred to a design document. Signed ALF messages let a counterparty check a message's content but reveal neither deletions nor changes to other actions.

    Fail
  • A3
    Separation from the audited

    The agent cannot alter its own record: `db_execute` rejects any statement that touches `adf_` tables, and no tool mutates `adf_audit`. The exception is host compute, which needs both an agent flag and an owner-only setting and gives direct access to the `.adf` file.

    Pass
  • A4
    Readable with ordinary tools

    Loop, inbox, outbox, task and log tables are plain SQLite. `adf_audit` blobs are brotli-compressed JSON, readable with sqlite3 plus any brotli decoder.

    Pass
  • A5
    Corroborated interactions

    Each ALF message carries a globally unique, signed id recorded as `message_id` in both the sender's `adf_outbox` and the receiver's `adf_inbox`, so the two sides' records of an exchange can be matched. Message deletions are not recorded by default (see T4).

    Pass

Verifiable · Can you prove the agent runs what it claims?

60%
  • V1
    Open, reproducible runtime

    The runtime is MIT-licensed and releases are built in public GitHub Actions from package-lock.json with `npm ci`, then signed. Reproducible builds are not claimed or documented.

    Partial
  • V2
    Active config is inspectable config

    Agent config is the JSON in `adf_config`, but the running agent also depends on app-level runtime settings outside the file (host access, provider keys, MCP environment). The executor may also carry in-memory config additions that are never persisted.

    Partial
  • V3
    Attributable messages

    ALF messages are signed by default (security level 1) with the agent's Ed25519 key, which travels sealed in the file, so recipients can verify the sender DID before and after migration. Messages sent through channel adapters such as Telegram or email cannot be verified this way.

    Pass
  • V4
    Independently checkable record

    The action record carries no integrity data, so no tool, open or otherwise, can confirm it is unaltered. A verifiable event log is proposed only in a deferred design document.

    Fail
  • V5
    Comparable state

    All agent state is one SQLite file, so the owner can copy it at any two points and compare the copies with open tools such as `sha256sum` or SQLite's `sqldiff`. No built-in state digest is provided, so the comparison is a manual step.

    Pass

Modifiable · Can you change anything, without asking?

100%

Controllable · Is your word final?

92%
  • C1
    Communication boundaries

    Owner-configured outbox and fetch middleware runs in the runtime pipeline before any message is sent or HTTP request is made and can reject it, so any recipient, domain or channel policy the owner writes is enforced below the model. The agent is hard-denied from changing the middleware configuration, middleware must come from owner-authorized files by default, and sandbox code has no direct network access. WebSocket and shell tools (both off by default) and owner-installed MCP servers sit outside this pipeline.

    Pass
  • C2
    Approval gates

    Tools marked `restricted` require owner approval before running from the LLM loop. Approvals are tracked as `adf_tasks` rows, and only the owner or authorized code can resolve them.

    Pass
  • C3
    Immediate halt

    `abort` immediately cancels the current turn. Setting state to `off` tears down the LLM request, triggers, MCP servers, adapters and sandboxes, and CLI `stop` does this after a 5-second grace period.

    Pass
  • C4
    Data sovereignty

    No analytics or telemetry SDK was found, and content goes only to owner-configured providers and peers. The packaged app checks GitHub Releases hourly with no opt-out, and it fetches the MCP registry from GitHub. No network-inspection verification was performed.

    Partial
  • C5
    Credential custody

    MCP, channel-adapter and agent secrets are stored in `adf_identity`, AES-256-GCM-sealed to owner and runtime keys, and they travel with the file and can be inspected and deleted in the Identity panel. App-level provider keys and subscription OAuth sessions stay in local OS-keychain storage and do not travel with the file.

    Pass
  • C6
    Full deletion

    Deleting an agent in Studio stops it and unlinks the `.adf` file and its WAL files, which destroys the private key. Rawl holds no copy, though stale `.bak.*` backups and compute workspaces may remain on the owner's disk.

    Pass
Something wrong or out of date?

Vendors and the public can dispute any finding with evidence. Disputes and their resolutions are published.

Dispute a finding