Roadmap

Where OpenClerq is going

Release 0.5 — Execution — has landed. OpenClerq now talks to eight model providers, records every run with what it cost, and can stop any of them — one run at a time, or all at once with the kill switch.

The pieces that will let an agent act — the sandbox, the policy engine, git workspaces — ship in 0.5 as tested libraries that nothing calls yet. No tool runs commands or touches a repository today; release 0.6 is their first consumer. This page summarises the plan. The authoritative version lives in the repository and is updated there first.

Shipped
0.5.0
Next
0.6 · agents
Trains to 1.0
Two
Updated
2026-09-18

What changed in 0.5

Everything in this list is live in the gateway and the desktop app. One configuration change: CLERQ_OPENAI_API_KEY, an undocumented alias, is gone — set OPENAI_API_KEY instead.

  • Eight model providers. Anthropic, OpenAI, DeepSeek, Moonshot (Kimi), Z.ai (GLM), MiniMax, Ollama and LM Studio. Pick one with CLERQ_LLM_PROVIDER, or name a qualified model such as deepseek/deepseek-chat. Override the built-in registry with ~/.clerq/providers.yaml.
  • Chat console. A desktop module with three modes: raw adds nothing to the conversation and shows the exact request body; managed runs the existing task pipeline; comparison sends one message to up to eight models, with latency, tokens and cost for each answer. Answers stream and can be stopped.
  • Run history and cost. Tasks, trigger firings, webhooks and chat messages are recorded as runs with a step trace. Every model call records its tokens and cost against its run — and a model with no known price is reported as unknown cost, never as $0.
  • Cancellation and a kill switch. Stop a single run, or refuse every pending approval, cancel every running run and pause all triggers in one call.
  • Approvals and a live event stream. An approval inbox with risk tiers, where a request nobody answers is refused, and a stream of runs, model calls and approvals as they happen.
  • A private local store. State moves into SQLite at ~/.clerq/clerq.db, with migrations; existing memory and triggers are imported on first start. The vault key moves into the OS keychain — macOS Keychain, libsecret or Windows DPAPI.
  • Fixed: ~/.clerq and the files in it holding keys, conversations and the vault are readable only by their owner, and existing installs are repaired on startup. Persistent runs are now scheduled by the gateway, not by a timer that ran only while the developer view was open.

Built and tested, not yet wired in: the sandbox (native, macOS seatbelt and containers, with an egress allowlist), the policy engine, and git workspaces that give each run its own worktree and open draft pull requests. The approval inbox is live, but nothing raises an approval until a tool needs one in 0.6.

Release trains

Shipped releases list what actually shipped. Items marked Library are built and tested, but nothing in the gateway calls them yet.

  1. 0.4 — Foundation

    Shipped

    Closes the blocking security gaps. The gateway API requires authentication from this release on.

    • Loopback bind by default; a remote host needs an explicit setting and a configured token
    • Authentication split from licensing — bearer token, public /health, everything else authenticated
    • Canonical path validation with an explicit symlink policy and size caps
    • SSRF hardening: https only by default, every redirect checked, private and metadata ranges blocked, time and size bounds
    • CORS reflects only allow-listed origins; request bodies capped at 1 MiB
    • One version across every package and the health endpoint
    • CI gates required before build
  2. 0.5 — Execution

    Shipped

    Models, runs, and the controls around them. The execution libraries arrive ahead of the runtime that will call them.

    • Provider registry for eight vendors, overridable with your own providers.yaml
    • Token and cost accounting for every model call, recorded against its run
    • Chat console — raw and comparison modes, plus a managed mode over the existing task pipeline
    • SQLite store with migrations; memory and triggers imported once
    • Vault master key in the OS keychain, with a mode-0600 key file for headless hosts
    • Event stream, run cancellation and a kill switch
    • Approval system with risk tiers — the inbox is live; nothing raises an approval until 0.6
    • Library Sandbox profiles — native (development only, warns), macOS seatbelt, and containers as the server default
    • Library Per-run limits — wall clock and output size everywhere; CPU, memory and process count in containers
    • Library Egress allowlist enforced at the sandbox boundary through a local proxy; a profile that cannot enforce it refuses it
    • Library Policy engine — tool groups, profiles, allow and deny rules, per-run call caps
    • Library Workspaces — a git worktree per run, and a publish path that opens draft pull requests
    • Library Secrets injected into the sandbox environment only, redacted on the way back
  3. 0.6 — Agents and automations

    Next

    The first consumer of the 0.5 libraries: agents that act, on a schedule, inside the sandbox.

    • Driver interface with process supervision; Claude Code, Codex and cursor-agent drivers, each saying plainly if its CLI is absent
    • Built-in tool-calling loop, with every call routed through the policy engine
    • Context management — token estimation, rolling history, compaction, pinned context, tool-output truncation
    • Durable queue with leases and catch-up for schedules missed while the machine slept
    • Concurrency caps, fair scheduling across repositories, retry with backoff, escalation on gate failure
    • Automation spec parser and validator with line-accurate errors; gate runner for shell checks and diff assertions
    • Budget enforcement that pauses an automation rather than quietly spending
    • Model routing and fallback chains — an explicit model choice is strict; defaults and scheduled jobs may fall back
    • Memory 2.0 — typed records, full-text search, summarisation, policy-controlled retrieval
    • Sub-agents with a narrower policy than their parent, bounded in concurrency and depth
    • Desktop UI split into routed screens: Automations, Runs, Approvals, Repos, Providers
    • Chat console managed mode with policy-filtered tools and inline approvals — and automations drafted by describing them, saved disabled and manual on their first run
  4. 1.0 — Platform

    Planned

    Headless installs, real signing, and a plugin contract proven by using it.

    • GitHub sign-in through a GitHub App — short-lived installation tokens, per-repo scope, revocable
    • Headless daemon with a systemd unit, a Docker image and reverse-proxy guidance
    • Command-line client: log in, add a repo, apply an automation, run, read logs, approve
    • Linux packages in the release matrix, a one-line installer and a one-line container run
    • Restrictive content security policy in the desktop shell; real updater signing keys with documented rotation
    • Plugin SDK with declared permissions and a lifecycle — the chat console moves onto it as the reference first-party plugin
    • Skill manifests declaring required tools, network domains and filesystem scope, with checksums and trust states
    • Versioned API protocol, migrations, and a published threat model
  5. After 1.0

    Exploring

    Routing strategies — cost-aware, quality-first, race, consensus · fleet runs across many repositories with roll-up reporting · a recipe registry · run replay and cost analytics · exposure as an MCP server so other agents can drive OpenClerq · a browser module · an optional channel adapter.

Automations you review in a pull request

Arriving in 0.6. An automation is a file — versioned, diffable, reviewable and shareable as a recipe — that holds the schedule, the sandbox, the gates that must pass before anything ships, and the budget it may not exceed.

name: nightly-dependency-triage

on:
  schedule: '0 3 * * 1-5'     # weekday 03:00, host timezone
  catch_up: true              # run once on wake if the slot was missed

agent:
  driver: claude-code         # or codex, cursor-agent, builtin
  model:
    primary: claude-opus-5
    strategy: cost_aware

sandbox:
  profile: container
  network: [registry.npmjs.org, api.github.com]
  timeout: 20m

gates:                        # all must pass or the run does not publish
  - run: pnpm test
  - assert: diff.files_changed <= 5

publish:
  pull_request: draft

budget:
  max_usd_per_run: 2.00
  on_exceed: pause_automation

Three surfaces over the same object: a form, a YAML pane, and a command-line apply for people who want their automations managed by CI.

Two domains, one engine

OpenClerq began as a clerical automation tool; the roadmap adds repository automation. Both run on the same engine: schedule, isolate, execute, verify, report.

Clerical work

Routine, rule-based office work for accountants, HR, legal assistants and administrators. Calculations run locally in a deterministic engine; the model advises and explains.

Repository work

Scheduled agent runs against the repositories you point it at, isolated in a sandbox, publishing draft pull requests only when their gates pass. Arrives with 0.6.

Your agent, your subscription From 0.6, OpenClerq runs the agent you already use — Claude Code, Codex, cursor-agent, or a model API directly — and provides the layer around it: scheduling, isolation, model routing, verification, cost control and an audit trail. Agents run under your own subscriptions, so OpenClerq has no billing relationship with any model vendor.

What we deliberately do not build

Restraint is a feature. A smaller core with stronger boundaries is the position.

  • Localhost is not authentication. A loopback bind is never treated as an authorisation decision.
  • Developer mode is not production authority. No debug flag may disable authentication.
  • Skills do not imply permissions. A skill declares what it needs; the policy engine decides.
  • Push is not merge. Draft pull requests by default; auto-merge is opt-in and gated.
  • No self-arming automations. A spec drafted in conversation saves disabled and pushes manually on its first run, whatever the draft asked for.
  • Raw chat gets no tools. There is no mode that strips the prompt scaffolding while keeping filesystem or shell reach.
  • No autonomous loop without a budget and a timeout, and no sub-agent with a wider policy than its parent.
  • No unrestricted plugins. Executable plugins are code, and declare their permissions.

What is protected today, what is not yet, and the binding rules every change has to keep are in SECURITY.md.

Follow along or shape it

The roadmap changes as the work does. Issues and pull requests are the place to argue with it — and if you need a specific desktop worker built on this core, tell us what it has to do.

OpenClerq on GitHub Clerq for Business