CALF
CALF gradient C logo
Controlled Agent Lifecycle Framework

Get started with CALF.

Connect your AI, describe a task and review the result. This guide walks you through installation, your first task and the tools you can use along the way.

1.8.x · Harness1.9.x · WorkbenchEnglish app menus · Write requests in your language

Workbench 1.9.16 · Start with one task

Choose a project folder and connect the AI you already use. Describe the result, what to keep and how to check it. The first-task guide helps you get ready before you submit.

Use Current for the latest status and Recorded for earlier results. If a task needs a decision, you will find it in Attention.

Screen guide · First task · Current downloads · Legacy releases

Actual Workbench 1.9.16 first-task guide
Workbench 1.9.16 · First-task guide / 첫 작업 안내
Current UNKNOWN and historical SATISFIED
Example: a task that needs checking beside an earlier result. / 현재 확인이 필요한 작업과 이전 결과를 나란히 보는 예시입니다.

Find useful development references.

Open Engineering knowledge to browse the 367-entry starter catalogue. Each entry shows whether a full description is available. You can also look up references through Repository MCP or the SDK.

Add your own collection when you need it. The index stays on your computer, and selected references stay with the task when you resume. Use them to guide the work, then check the resulting files.

Engineering guide · Local model connections (preview) · Current release

필요한 개발 자료를 찾아보세요.

Engineering knowledge에서 367개 기본 참조 목록을 살펴보세요. 항목마다 본문이 있는지 확인할 수 있습니다. Repository MCP나 SDK로도 자료를 찾을 수 있습니다.

필요하면 보유한 자료도 추가하세요. 색인은 내 컴퓨터에 남고, 선택한 참조는 작업을 재개할 때도 함께 이어집니다. 자료를 참고해 작업한 뒤에는 결과 파일을 검사하세요.

공학 지식 안내 · 로컬 모델 연결 (미리보기) · 최신 배포 안내

Repository Intelligence

Find an earlier decision.

Open Repository context, connect a CALF history folder and choose a module. Search earlier decisions or open the original record you need.

Use Capture local Git to save versions from HEAD, the index and your working files. Choose a file and version to read. Capturing files does not run checks or send them to your AI.

Repository Intelligence is included with CALF. Repository guide · Claude connection.

01 / Editions

Choose the interface you need.

Harness · 1.8.19

Use Harness from your terminal to connect CALF to Codex or Antigravity, or to run a task without opening a window.

Workbench · 1.9.16

Use Workbench to follow a task, inspect file changes and check results, and make small corrections from a desktop app.

New tasks created through calf task and Workbench use the same job format. Point both to the same CALF_WORK_HOME to see the same jobs. Do not run both workers on separate copies of a live records folder.

Legacy 1.8.4 hook records remain in their existing history.html and installation state. They are preserved; they are not automatically imported into Workbench's task list.
02 / Installation

Extract, keep the folder, then launch.

PlatformPackageRequirements
macOS Apple Siliconmacos-arm64.zipmacOS 14+; native ARM64. Open CALF Workbench.app for the desktop edition.
Windows x64windows-x86_64.zipWindows 10/11 x64; Workbench needs Microsoft WebView2 Runtime. Open calf-terminal.exe.
Linux x64linux-x86_64.tar.gzglibc desktop. Workbench requires GTK 3, WebKitGTK 4.1 and a graphical session; Debian 13 is the native UI test environment. Run ./calf-terminal.

Use the package matching the CPU, not only the OS. Intel Mac, Windows ARM64, Linux ARM64 and Alpine/musl are not included. Rust, Node.js and an external SQLite installation are not needed. The checks for your project still need their own runtimes; supported Python checks need Python 3 and, for pytest, an already installed pytest; Cargo checks need an installed Rust toolchain and cached dependencies.

  1. Download the archive and SHA256SUMS from the matching GitHub or GitLab release.
  2. Verify the archive hash, then extract the entire folder. On Linux use tar -xzf FILE.tar.gz to preserve executable permissions.
  3. Keep the core calf / calf.exe beside the desktop executable. On macOS both are inside the app bundle.
  4. Launch Workbench, or run ./calf --help (.\calf.exe --help in PowerShell).
# macOS
shasum -a 256 CALF-Workbench-1.9.16-macos-arm64.zip
# Linux
sha256sum CALF-Workbench-1.9.16-linux-x86_64.tar.gz
# PowerShell
Get-FileHash .\CALF-Workbench-1.9.16-windows-x86_64.zip -Algorithm SHA256
Workbench 1.9.16 for macOS is signed with Developer ID, notarized by Apple and includes its notarization ticket. Harness 1.8.19 uses an ad-hoc integrity signature. Windows packages have no publisher signature. Follow your OS's normal trust controls and your own policy. Do not disable Gatekeeper, SmartScreen or endpoint protections.

The default records folder is below. An explicit absolute CALF_WORK_HOME overrides it. Existing development installations may also have a runtime.json; an explicit runtime takes precedence and fails closed if its home is invalid.

macOS:   ~/Library/Application Support/CALF/workbench
Windows: %LOCALAPPDATA%\CALF\workbench
Linux:   $XDG_DATA_HOME/calf/workbench
         or ~/.local/share/calf/workbench
03 / First task

Start with one task.

Choose a project folder and the AI you already use. Describe the result you want and what to keep unchanged.

  1. Choose Choose workspace and select the project CALF may work in.
  2. Choose Connect AI. A saved connection reports local selection, not live authentication or permission.
  3. In an empty request, choose Use a request outline. Fill in Result I want, Keep unchanged and How to check. Review the completed request, then choose Submit.

Once a task appears, the guide folds away. Open Start a task to see it again, or Check setup to check your connection and tools.

CALF uses your project’s existing checks: unittest, configured pytest, supported Cargo integration tests or node:test. Set these up before starting. The request outline helps you describe the task; you still need to choose how to check the result.

Keep using your existing AI account and approval settings. You can also connect through the OpenAI API; its key is stored in your OS credential store and API usage is billed by the provider.

Work records stay on your computer. A remote AI receives the task snapshot and references you attach, so using a remote AI still needs an internet connection.

Check profiles / Python environment

./calf check-discover /absolute/path/project inspects check selection without starting a task. Python selection is .venv → venv → active environment → bounded PATH probe. An invalid explicit environment stops discovery. Dependencies are not installed automatically; pre-existing failures are recorded rather than waived.

Actual Workbench 1.9.16 · First task / 실제 첫 작업 안내
Workbench 1.9.16 · First-task guide / 첫 작업 안내
Actual Workbench 1.9.16 · Draft before submission / 제출 전 초안
Workbench 1.9.16 · Request outline / 요청 초안

The CPU and memory readings in the screenshots are for the whole computer.

CALF Workbench 1.9.2 Task Flow · execution and evidence
Example: an earlier invoice task opened in Workbench 1.9.2.
04 / Headless

Use CALF from your terminal.

./calf task home
./calf task connect codex
./calf task run "/absolute/path/project" "Fix the total calculation; preserve the tests."
./calf task list
./calf task status TASK_ID

PowerShell uses .\calf.exe. Supply an executable path after connect codex if discovery fails. Shell quotes protect paths and requests containing spaces or CJK text.

CommandBehavior
task submit WORKSPACE REQUESTQueue a new job and print its ID. Does not start a background service.
task run WORKSPACE REQUESTQueue, process eligible jobs in the same home, then return this job's current result. Exit 0 requires SATISFIED; 2 means incomplete; 1 is a command error.
task workProcess the queue in the foreground. Opening Workbench also starts eligible queued work. Its exit 0 means worker idle, not that every task passed.
task pause / resume / cancel IDRequest control. Resume queues the remaining work; run task work afterward. Cancellation is final.
task recheck IDQueue checks after a supported external edit, within the existing budget and scope.
task preferences "TEXT"Save a working preference for future jobs.

For custom non-Python checks and provider adapters, the advanced calf run WORKSPACE REQUEST PROVIDER.json STATE [RESUME_TASK] interface accepts a bounded provider/check specification. The JSON calf api interface exposes the same task operations as Workbench; it requires an explicit home. These interfaces do not add permissions to the connected host.

Share a custom records folder with Workbench
# macOS / Linux: use an existing physical folder
export CALF_WORK_HOME="/absolute/path/calf-records"
./calf task home
# Launch the Workbench executable from this same environment.
# macOS: "CALF Workbench.app/Contents/MacOS/calf-terminal"

# PowerShell
$env:CALF_WORK_HOME = 'D:\CALF\workbench'
.\calf.exe task home
.\calf-terminal.exe

GUI launchers may not inherit terminal environment variables. Keep an existing explicit runtime configuration when using custom storage. Do not move a running records folder.

05 / Host integration

Connect your existing AI tools.

Hooks connect CALF to the tools you already use. Your host’s approval and sandbox settings still apply.

./calf install --root "/absolute/path/CALF" \
  --codex-home "/absolute/path/.codex" \
  --antigravity-home "/absolute/path/.gemini"
./calf register "/absolute/path/project" "/absolute/path/contract.json" \
  --config "/absolute/path/CALF/config.json"
./calf status "/absolute/path/project" "example-task"

The installer keeps versioned binaries and backs up settings before adding its hooks. Restart the host; Codex may require its normal /hooks review and trust step. Run the exact checks[].commandLine returned by registration. It binds the installed executable, project, task, criterion and contract hash. Keep old installed binaries because old registered commands still reference them.

Use the included contract.example.json as a template. Set a new task ID, relative file scope, an executable-and-arguments array, and environment keys that affect the check. A successful process exit alone is not acceptance; inspect outcome. If no registered evidence exists, CALF retains UNKNOWN.

Remove the hooks without removing records
./calf uninstall --root "/absolute/path/CALF"

If settings still match CALF's recorded edits, the original backup is restored. Later user changes are retained while owned hook entries are removed. Conflicting ownership or backup changes stop removal. Records, backups and versioned binaries remain. Do not use the historical 1.8.0 --detach-only escape unless you understand that original settings restoration cannot be established.

Antigravity compatibility update

CALF can read the completion details in Antigravity’s long-output preview. Use the included connection guide to set it up.

For Claude CLI or the desktop app’s local Code mode, follow the English or Korean guide in the included hosts/ kit. The Claude connection is available on macOS.

06 / Workbench

Follow the task on screen.

AreaWhat it shows
Task FlowRecorded EDIT, CHECK, REPAIR and review stages with small timestamps. Select a node to inspect its evidence.
Git GraphLocal commits, HEAD / branch labels and working-tree status. Read-only observation; no fetch, push, checkout or execution permission is granted.
Worker terminalsRecorded or current operation, process ID, exit information and check evidence. A node can remain in the view after its process has stopped.
System monitorCPU, GPU, memory, swap, disk and network when available. Missing sensors remain unavailable. Whole-system memory is not CALF's own footprint.
JournalAppend-only execution events and recovery evidence. Earlier failure records stay visible after a successful retry.

Read the status text along with its color. Green marks completed work, amber marks waiting or unfinished work, and red marks failure or cancellation. Git Graph uses colors to show repository state.

CALF Workbench 1.9.2 Task Flow · execution and evidence
Example: an earlier invoice task opened in Workbench 1.9.2.
07 / Diff and evidence

Review the changed files.

In Diff, choose Task, Attempt, Recovery or Working Tree. Use Unified or Before & After to compare a file, then open its saved content and check results. Only content saved with the task is available to view.

Look at which version of the file a check tested. If the file changed afterward, run the checks again. When CALF cannot match a result to the current file, it shows that the result needs checking.

PASS / SATISFIED means the selected requirements and checks passed. Review the changes yourself before using them. An additional AI review may use the same provider as the task.
CALF Workbench 1.9.2 Diff · the exact checked change
Before & After shows a file’s changes alongside its check result.
08 / Small corrections

Light Edit or your own editor.

  1. Select a changed file in Diff.
  2. For a small correction, open Light Edit. Review the text, apply the patch, then wait for revalidation.
  3. For larger changes, select an editor and choose Open in Editor. The detected list is platform-dependent; Add editor lets you select an application or executable manually.
  4. After an external edit, return to CALF and choose Recheck. Old PASS evidence cannot be reused for a different file version.

Use Light Edit for files up to 16 KiB and changes of up to 40 lines. Wait for the running task to finish first. Protected test/settings files and files outside the chosen scope cannot be edited here. For larger changes, open your editor. You can add up to eight editors.

09 / Recovery

Continue a task that stopped.

StateNext step
WAIT / resourcesLeave the worker running or reopen Workbench. Eligible work resumes when resources permit. The fader limits work; it does not drop checks.
RETRY / response incompleteInspect the failure and connection, then Resume. Earlier attempts and consumed budget remain.
PAUSEResume when ready. Pause applies between owned operations, not necessarily at the instant of a click.
CHECK / evidence staleReview the current file version and Recheck. Do not force old evidence to PASS.
CHECK / needs reconciliationAn operation's effects are uncertain. Inspect files and evidence; ordinary Resume is refused until the supported reconciliation is established.
FAIL / budget exhaustedInvestigate the retained attempts. Reuse can create a new task with a fresh request and checks; it does not reset or rewrite the failed task.
STOP / cancelledThe task is final. Start or Reuse a new task if work is needed.

Use Reuse to start a new task from an earlier request. The new task runs its own checks. To stop a running task, use Cancel and check its status; closing the window may leave the worker running.

To rebuild a damaged index, back up your records and run calf recover-index WORKSPACE. CALF uses the saved HTML records to rebuild it. If those records are damaged or missing, recovery stops and the problem needs attention.

10 / Local context

Choose what to share with your AI.

  1. Open Local sources and choose Add folder.
  2. Browse or filter names, then preview a text file.
  3. Use Attach to next task only when you want that reference included in the next AI request.
  4. Disconnect a source to remove its CALF connection. Earlier task evidence remains.

Attach up to four references, within 8 KiB including source details. Hidden files, symbolic links and credential-related files are excluded. If an attachment changes, select it again. These controls apply to CALF’s reader; your AI host keeps its own file access.

To use the same folder reader from an MCP client, run calf local-mcp "/absolute/path/folder". Choose only the folder you need. The connection uses stdio and does not open a network server.

CALF sources — 실제 Workbench 화면
Previewing a local file before attaching it to a task. Workbench 1.9.0.
11 / Personalization

Tell CALF how you like to work.

Use My preferences to save your preferred language, response style and working conventions for new tasks. Existing tasks and their rules stay as they were. The app menus are in English; you can write requests, filenames and preferences in Korean, Chinese, Japanese and other languages supported by your fonts.

CALF loads file previews when you open them. You do not need a local language model or a separate indexing server. Leave enough disk space for the work records you keep.

12 / Upgrade safely

Preserve the data; replace only the program.

  1. Let owned operations finish, or request Pause and wait for the owned process to stop. Close the old Workbench window before replacing program files.
  2. Back up the existing installation configuration, history.html, contracts, settings and complete Workbench records home. Keep related journal segments and indexes together; the HTML is authoritative.
  3. Extract the new package into a new folder. Keep the old package until the new one is verified.
  4. For an existing 1.8.4 hook installation, run the 1.8.19 installer with the same installation root and host homes. The installer preserves versioned binaries, bindings and original setting backups. Review hooks through the host's normal mechanism if prompted.
  5. For Workbench, keep the same records home. If the old development build used an explicit runtime.json, retain that private configuration beside the new desktop/core binaries, or launch both interfaces with the same CALF_WORK_HOME. Do not put your runtime configuration in a public package.
  6. Inspect previous records and a newly executed check. Files changing after verification must become stale, not stay PASS.

Resuming after an update: keep the full records folder, including runtimes. Tasks use the program version they started with. If that version cannot be found or verified, CALF leaves the task waiting for attention. Advanced calf run tasks also need their original compatible runtime.

Rollback: close the new app and retain its data; launch the previous binary against a backup of the appropriate record format after checking compatibility. Do not restore old host settings over later user edits. Never delete versioned binaries still referenced by registered check commands.

Connect a tool with Runtime Work.

Use SDK 0.2.11 to connect a Python, Node or loopback HTTP adapter and describe the work in a calf.work.v1 contract. Follow SDK_WORK_PROTOCOL.md and the examples in the SDK archive. CALF pins the files and executables you select; the adapter still runs with its OS permissions.

  1. Keep the same CALF_WORK_HOME for Harness, SDK, Local MCP and Workbench.
  2. Open Runtime Work → Import contract…. Import prepares a saved copy of the contract and inputs. Choose Run / Resume when you are ready to execute.
  3. Select the work and use Run / Resume. CALF records the real process, attempt, output manifest and required checks. If an HTTP response is lost, CALF queries the existing request ID before deciding what to do next.
  4. Inspect artifacts, timestamps, checks and Evidence. Recheck validates the current candidate. If the file digest has changed, the result is UNKNOWN.
  5. Use Adopt checked version only for a matching validated candidate, or use a contract that explicitly authorizes automatic adoption. A new attempt consumes the original budget and preserves earlier candidates.

After Cancel, wait for the process and cleanup to finish. Until CALF can confirm this, the task stays UNKNOWN and keeps its execution slot. Opening the panel only shows the task; choose Run / Resume to continue it.

CALF Workbench 1.9.2 Runtime Work · file artifacts across runtimes
Example: reviewing a document made by a Python adapter in Workbench 1.9.2.

Check your setup and update CALF.

Open Check setup to check your AI connection, project folder and check tools. Install any missing project tools yourself. In Updates, choose a release archive to prepare a separate copy of CALF. Keep your records folder and older runtimes so existing tasks can continue.

JavaScript/TypeScript checks use a bounded node:test profile. A suitable Node runtime is required; TypeScript support depends on the selected runtime. npm scripts and dependency installation are not executed. Python unittest/pytest and bounded single-package Cargo integration checks remain supported.

Use the source-reader MCP to browse files and work MCP to manage tasks. Work MCP is read-only by default; enable task controls when you need them. It handles file outputs. External transactions and the artistic quality of media need their own review.

See how things stand now.

Choose a workspace and open Task status to see saved results beside the current status. Refresh status refreshes the display without running checks or calling your AI.

If a file or its check environment changed, an earlier PASS may show as UNKNOWN now. Open the details to see what changed, such as a different LC_ALL language setting, then decide whether to run the checks again.

Expand a task card to see its earlier and current results. SDK users can call registered_tasks(workspace) and registered_status(workspace, task); use the current top-level outcome to read the result.

Older records may have fewer details. Missing information is shown as unavailable. Refreshing the display keeps the original results and does not approve or rerun a check.

Actual Workbench status view showing saved and current completion separately
Saved and current results side by side. Workbench 1.9.4.

Claude Code connection

Follow Host connections to connect Claude Code. Keep the previous version, review the proposed hooks and apply the setup when ready. Existing permissions and unrelated MCP settings stay in place. This connection does not need Python.

Claude keeps its own approval steps. CALF shows the checks run for the task and the files they checked, so you can review the result before continuing.

Connect a local MCP tool.

When a task needs a local tool, choose its server and policy in the work contract. Use the tool’s description to understand it, then review the proposed action before running it.

calf_tool_prepare or tool-prepare prepares a request for review. Check the task, arguments, targets, checks and expiry, then use your host’s approval flow to run it. Preparing the request does not run the tool.

Outputs are written to a new path and checked there. If the selected policy supports recovery, CALF can use the saved process result and matching files. When a call’s outcome is uncertain, check it before trying again. This route does not support deletion, overwriting, external uploads or recovery of remote jobs.

MCP setup guide · SDK examples

Keep the task in focus

Open Attention to find tasks that need a decision. Choose a task to see its details; use the task’s controls when you are ready to act. Result summary brings together changed files and check results.

Use Shape request… to describe the result, what to keep and how to check it. Review the draft, then submit it when ready.

Press Find task… or Cmd/Ctrl + K to search recent tasks. Use the arrows to choose one, Enter to open it and Esc to close the search. You can search in Korean, Chinese and Japanese too.

Use Light | Dark to change the center panel’s theme. Use Show monitors, Close or Cmd/Ctrl + Shift + M to show or hide the monitors. They start folded in narrower windows; tasks keep running when they are hidden.

More about the Workbench controls

13 / Troubleshooting

When something goes wrong.

SymptomCheck
No automatic checksUse unittest, explicitly configured pytest, or a single Cargo package with integration tests. Install missing tools yourself; unsupported layouts require an explicit advanced check specification.
Codex unavailable / login requiredUse the existing Codex login and select its executable. Do not paste credentials into requests, logs or issues.
App will not openConfirm OS/CPU, extract the whole package, check OS trust prompts and required WebView/GTK libraries. On macOS close any old instance and launch the exact new bundle.
Missing old jobsCompare the records home. Legacy hook history is not the Workbench job list. An invalid explicit home does not silently fall back.
Memory pressure / provider failureRead the specific failure. High whole-system memory does not prove the provider failed from memory pressure.
Editor missingRefresh the list or Add editor manually. Select an installed application/executable, not a document.
UNKNOWN after a changeOpen the task details and check the affected files, check results and cleanup status. Keep the error records while you resolve the problem.

Before using a result, review the changed files and the checks your project ran. Checks cover what you selected; they cannot catch every kind of mistake. CALF uses your OS account and its permissions, so keep your usual system protections in place.

When asking for help, include your CALF version, OS, the steps that led to the problem and the error message. Remove API keys and private information before sharing logs or files. Package licence details are in THIRD-PARTY-NOTICES.txt and the included licence files.

Manage saved files.

Open Artifacts to see saved files, the tasks using them and why they are kept. Choose a workspace or task, then refresh the list. Preview a move before deciding whether to confirm it.

  1. Choose Preview index quarantine for a verified rebuildable index, or preview an eligible managed file in the file list.
  2. Review its exact path, size and SHA-256, then choose Confirm quarantine.
  3. In Retained moves, choose Review restore and confirm separately. A newer file is never overwritten.

Temporary files can be quarantined after their tasks release them and their retention period ends. Source, tests, existing logs, task records, contracts, settings and recovery files stay protected.

Quarantine keeps the files, so it does not free disk space. There is no automatic cleanup or permanent deletion. The optional managed-text API accepts up to 16 KiB per file and 128 files per journal. See the full guide.

Open CALF from your IDE.

CALF Connect opens Workbench from your IDE. Follow the installation guide and screen guide. Submit the task in Workbench when you are ready.

macOS

macOS Workbench

Windows

Windows Workbench

Linux

Linux Workbench