Release notes

What's new in Qorvyn

Every version, newest first. The latest is 1.13.1: update with npm install --save-dev qorvyn@latest, or npm install -g qorvyn@latest. The same notes are in the dashboard (What's new) and in the terminal: npx qorvyn changelog.

Qorvyn 1.13.1

2026-10-20

The new Q in the browser tab

  • Tab icons: the dashboard, the team portal and the sign-in pages show the new Q in the browser tab, from a proper favicon.ico (16, 32 and 48 pixels) and icon files with new names, so browsers don't keep the old one from their cache.

Qorvyn 1.13.0

2026-10-20

qorvyn.live, the new logo, quality you can show, and client billing

  • Qorvyn lives at qorvyn.live. The website is qorvyn.live, the team server team.qorvyn.live, and the super admin area admin.qorvyn.live (served there alone, with its own sign-in). Mail comes from Qorvyn <noreply@qorvyn.live>. If you were signed in to the old address, you stay signed in: Qorvyn moves your saved sign-in to the new one.
  • The new Q logo and QORVYN wordmark across the dashboard, the team portal, the sign-in pages and the website.
  • Backlog. The team ranks what to build next (qorvyn backlog, dashboard Backlog). Starting an item runs a workflow with it; when the run succeeds, the item is done.
  • Defects and manual tests. Report a defect with its severity and put its fix on the backlog. It is verified only with evidence on the fixed commit: a check that passed there, or a manual test a person passed there. Agents can't verify or close defects. Manual tests are recorded per commit, and a passing one covers an acceptance criterion that has no check. Open critical and major defects, and failed manual tests, block release readiness (qorvyn defects, qorvyn tests, dashboard Quality).
  • Client reports. qorvyn report (or Client report on the Engineering page) writes the period's progress for a client as Markdown: delivered work, the backlog, quality, release readiness, what waits for a decision, AI usage.
  • Plan roles. Name the Agentic Architect, the AI Security & Quality Officer and the Workflow Translator (qorvyn roles, Guardrails page). An approval step can need a role, and so can delivering a run's changes; only the role's holders approve. Approvals record your Qorvyn account's email.
  • Metered client work (Qorvyn Cloud). qorvyn cloud session start --org <client> --budget <credits> holds a budget on the client's AI credit; Codex runs in the project then go through Qorvyn's gateway, priced by the server and charged to that client. qorvyn cloud statement --org <client> --month YYYY-MM [--csv] is the monthly statement (credit per bucket, AI usage per model with calls and tokens, every movement), also in the system admin area with a CSV download.

Qorvyn 1.12.1

2026-10-20

Errors you can fix where they show, and the Qorvyn look

  • Fix it right there. An error now carries its fixes, shown as buttons in the message itself, on every page and after every action. When GitHub refuses an account, it offers each signed-in account that can see the repository ("Use … for this project"), saving a GitHub token, and the command to sign in another account; one click, and the page loads.
  • The right GitHub account, automatically. With several gh accounts signed in, Qorvyn uses one that can see the repository when the active one can't, without switching your active account.
  • A new look. The dashboard, the team portal and the sign-in pages use Qorvyn's identity: Bricolage Grotesque for headings and the wordmark (bundled, nothing loaded from elsewhere), deep navy with blue-to-violet accents.

Qorvyn 1.12.0

2026-10-20

Runner pools in your cloud, secrets from your vault, SAML sign-in

The three Enterprise items that were planned are here (they need a Qorvyn Enterprise team server); hosted cloud has a written plan.

  • Runner pools in your own Azure. qorvyn env pool plan|token|secret|status|remove sets up replicas of qorvyn runner in Azure Container Apps, in your subscription. Every change is a priced provisioning plan you approve. Each replica has its own managed identity and reads its token, git token and agent keys from the pool's Key Vault; nothing secret is in the plan, the app or Qorvyn. Replicas clone the repository, set Qorvyn up there, take work, push their run branches, and retire themselves when the cloud stops them.
  • One token for a pool. An enrollment token can enroll up to 1,000 replicas and last up to 90 days (Enterprise). Tokens are listed (never shown again) and revoked from the API. A pool's runners work under the team server's license instead of a person's Qorvyn account (qorvyn runner enroll --pool).
  • Secrets from your vault for runners. A task names the secrets it needs (with the secrets privilege, so a person approves the plan). The workspace owner says where each is kept: an Azure Key Vault reference, never a value. Only runners with the trust and labels a secret requires get the task, and every release is audited. A runner reads the values with its own cloud identity, only when started with --secrets. Values reach the agent's environment and nothing else: they are hidden from output, events and results, and a run that writes one into a file has all its changes discarded.
  • SAML 2.0 sign-in for the portal and the CLI (Enterprise, configured by the server's operator). Signatures, issuer, audience, time and the request are checked, and the answer is bound to the browser that started the sign-in; replayed and forged answers are refused.
  • Runners: --agent-env NAME,NAME gives agents chosen variables from the runner's environment (hidden like secrets); --push-branches pushes each finished run's branch once; a runner can retire itself.
  • Hosted cloud: where it stands (prepaid wallets and the AI gateway are built), what remains (managed execution, checkout, hardening) and the decisions it needs, in docs/cloud/HOSTED_CLOUD_PLAN.md.

Qorvyn 1.11.0

2026-10-20

The Engineering Foundation: products, initiatives, evidence and environments

Most of it is switched on with qorvyn features on <name> (qorvyn features lists them); everything that existed keeps working as before.

  • Products start as an idea. A product exists before any repository, with an objective, a lifecycle and a versioned spec (requirements with acceptance criteria, components, dependencies, decisions) that a person approves. qorvyn product impact shows what a change touches and what depends on it; qorvyn product state compares the approved spec with the code, CI and deployments. qorvyn product bootstrap lists the way from idea to staging; create-repo creates a component's GitHub repository once, with your approval. On a team server, products live in the workspace and their specs are stored encrypted with the workspace's own key.
  • Initiatives and child workflows. A workflow step can run another workflow (approved at most what its step is approved); initiatives show progress, blockers and one timeline; steps wait for a provider or a budget instead of failing; failed runs can be rolled back with compensation steps.
  • A knowledge brain. Runs propose lessons, decisions, discoveries and the failures they got past; only what you approve reaches agents, and knowledge resting on files goes stale when they change. Contradictions are flagged; qorvyn kb eval measures retrieval.
  • Cost before you run. The Run dialog forecasts the AI cost per scenario from measured runs (or your rate card; otherwise "unknown"). Budgets for runs and initiatives are enforced before each step. Each step's model is chosen outside the prompt and recorded: cheaper only with verified evidence, stronger on a retry if the budget allows.
  • Skills. Versioned instruction packs for agents, checked on import, verified by a person, never granting access. New guardrail: agents start without write access when grantWriteOnCreate is off (also as an organization policy).
  • Evidence, not claims. Checks you configure run in a clean worktree of the exact commit (or a container sandbox with no network); verify steps; acceptance criteria tied to checks; qorvyn release readiness says ready only on evidence. Steps can own files, so parallel work never collides. Documents registered with their code go stale when it changes; ADRs come from approved decisions. qorvyn scan secrets and scanner presets.
  • Environments on Azure. Priced provisioning plans you approve within a budget, applied once through your az sign-in; canary deployments gated by health and smoke probes with automatic rollback; backups or restore points; an incident workflow from probes, deployments and logs.
  • Autonomy and the Engineering page. Supervised, Assisted or Autonomous runs (production, secrets, pushes and cloud changes always wait for a person); a page with initiatives, verified success, recovery, cost, knowledge health, evidence and environments.
  • Safer delivery. Pushes, pull requests and merges are recorded before they run and checked on the host after an interruption, so nothing is done twice.
  • A clearer sidebar. The dashboard's pages are grouped by what you came to do: Work (workflows, approvals, runs, pipelines), Insights (engineering, analytics, knowledge, code search, audit log) and Configure (agents, runners, project setup, guardrails, team).

Qorvyn 1.10.0

2026-10-20

Your project's own knowledge, and lessons from runs

  • Documents. Add specs, guides, runbooks or PDFs on the Knowledge page (or qorvyn docs add <file>). Their text is cut into passages (by heading), secrets redacted, and searched with every task like the code; agents get the matching passages cited by document and passage, as data. PDFs are read by Qorvyn itself, including those from Chrome, Word and most tools (text stored as glyph codes with a Unicode map); pdftotext is used when installed. Scanned PDFs and images have no text to index: attach them to a task instead.
  • Lessons from runs. After each successful run, Qorvyn writes down what it learned without another model call: the goal, each step's Handoff (what it decided or changed, what is left open) and the problems it met. Lessons are suggestions until you approve them (edit first if needed); approved lessons reach agents when they match the task, so later runs start from what earlier ones found. Write your own lessons too. qorvyn lessons lists, approves and dismisses them.
  • Search what agents would get. The Knowledge page searches documents, lessons and notes the way agents do, so you can see what a task would bring along.
  • The Knowledge item in the menu shows how many lessons wait for review.

Qorvyn 1.9.0

2026-10-20

Pipelines, and fixing what fails

  • Pipelines page (GitHub Actions): the repository's CI runs with status, branch, trigger and duration, updating while they run. Each run shows its jobs and steps and why it failed: the failing lines of each failed step and how it ended, without runner set-up noise.
  • Re-run, cancel, start. Re-run failed jobs or all of them, cancel a run, or start a pipeline that has a workflow_dispatch trigger, on a branch with its inputs.
  • Fix with Qorvyn. One click starts the new pipeline-fix workflow: the developer agent gets the failure and fixes it on a new branch made from the failing commit (never by loosening tests), and a pull request goes into the branch that failed, under your delivery guardrails.
  • Checks on runs. A run that opened a pull request shows the PR's checks, updating while they run, with a link to each pipeline.
  • Agent runs record their starting commit, shown in the run's timeline.

Attach files to goals and tasks

  • Attach files wherever you give instructions: Describe a goal, Run a workflow, Run again from here and running an agent (pick them or drop them in), and --attach <file> on qorvyn do, qorvyn workflows run and qorvyn agents run. Specs, screenshots, PDFs, logs, data: up to 20 MB each.
  • How agents get them. Text files go into the task as data (secrets redacted); PDFs, images and longer files are given as files the agent opens: Claude Code reads PDFs and images, Codex gets images. The planner sees a goal's files too, and every step of the run gets them; a step run again can get more.
  • Kept on your computer, outside every repository and worktree, so they are never committed. Files that look like secrets or credentials (.env, keys) are refused. A run's page lists its files.

Qorvyn 1.8.0

2026-10-19

Delivery as a workflow step, with conflicts handled

  • Deliver changes step. A workflow can end by opening a pull request, merging into your branch or pushing the run's branch, as one of its steps, under the project's delivery guardrails. Products deliver each project's share in its own repository.
  • Conflicts are resolved, not errors. When the run's changes conflict with the target branch, the step names the files and waits for you; approve and an agent (developer by default) merges the target into the run's branch and resolves them, keeping both sides' intent. Leftover conflict markers fail the step. Or have the step stop and tell you.
  • Approvals with the full picture. A waiting step shows what it will do and with which access, its task, the results it builds on, and what follows: the steps that start if you approve; what is skipped, what carries on and how the run ends if you reject.
  • What's new shows every release again. The published package's release notes (dashboard → What's new, qorvyn changelog) stopped at 1.0.0 since 1.0.1; they now list every release down to 1.0.0, and the release checks refuse a package whose notes don't start with its own version.
  • Readable agent runs. An agent run's task is shown as formatted text, with each earlier step's result handed to it folded under that step's name; its timeline reads as sentences (provider, model, access, how long, what changed). Commit messages no longer carry the handed-in results, and a commit's message is no longer coloured as if it were part of the diff.

Qorvyn 1.7.0

2026-10-19

A run tells its story; fewer tokens for the same work

  • Story view. A run's Story tab tells what happened in order, in plain sentences: each step starting (agent, project, provider), what it read and ran (folded under the step, the full log one click away), finishing with its time, tokens, the share served from cache and its cost, and the first line of its Handoff; approvals, skips, re-runs and the result. It updates live while the run is going. Filter by steps, decisions or problems.
  • Token use (Guardrails): Economy, Balanced (default) or Best quality. Steps that only read and review use a smaller model and think less; steps that write keep a capable model; an agent with its own model keeps it. Claude Code gets the model and effort per step, Codex its reasoning effort.
  • Compact handoffs. Every agent ends with a short "Handoff" section; the next step receives that (and the start of a long answer) instead of everything, and never loses the end of an answer to truncation. Economy passes only the Handoff; Best quality passes everything.
  • Cost limit per step (Guardrails): Claude Code stops a step that would cost more.
  • Cached tokens are shown apart. Steps show how much of their input came from the provider's prompt cache, which costs about a tenth as much.

Qorvyn 1.6.2

2026-10-19

Steer a run: run steps again, continue them, skip them

  • Run again from here. Any finished or failed step can run again, with a new task for this run and the agent's current instructions, access and guardrails. Start over (from the results it depends on) or Continue from its last result (it builds on its own changes and what it said, to optimize or finish). Then run the steps after it again (tests, review) or stop after this step. Writing steps ask for approval again; earlier steps keep their results.
  • Skip steps. Skip a step that hasn't started while the run is going, or choose steps to skip when you start a run. The steps after it carry on without its result.
  • Agents that change code can write from the start. A developer, documentation or devops agent is created with permission to change files (unless your guardrails deny it); each writing step still asks for your approval in every run, on its own branch. Others (reviewers, QA, architects) stay read-only.
  • Products in each project. A project's Runs page and overview list the runs of its products that had steps in it, with a link to review and deliver them.

Qorvyn 1.6.1

2026-10-19
  • Writing steps no longer run read-only by surprise. Agents a plan creates start read-only, so a goal like "implement …" could finish with only a description of the change and nothing to merge. Describe a goal now offers Let these steps change code (on by default): those agents may change files, each change goes on its own branch, each run still asks you to approve it, and nothing is merged until you choose. The Run dialog warns when a writing step would run read-only, and a run that had one marks the step Read-only and explains how to allow it.
  • Delivery on the Changes tab. A run's Changes tab starts with each project's changes and their actions: get the changes in your working folder, switch to the branch, merge, or push and open a pull request.

Qorvyn 1.6.0

2026-10-19

Goals for products, and runners from the dashboard

  • Describe a goal for a product. The planner (Claude Code or Codex) reads every repository of the product and puts each step in one of them, ordering steps across projects when one needs another (an API before the app that uses it). The plan is saved as the product's workflow and runs like any other: each step in its repository, changes delivered per project. Every project must allow the planner.
  • Runners from the dashboard. A new Runners page lists the team's runners and adds one in a few clicks: a name, labels and tasks at a time give a one-time token and the two commands to run on the other computer (any machine you control). Pause, resume or remove runners from the same page. Runners started for you on Azure are upcoming. Runners are never added through the team's web portal.
  • Send a workflow to runners. From the Runners page, choose one of the project's workflows, its inputs and (optionally) runner labels: each agent step becomes a task for the agent of the same name on a runner, approvals stay approvals, and results flow to the steps that need them. Low-risk work starts at once; other work waits for a workspace admin. Follow each run's tasks, and pause, resume or cancel it, from the same page.

Qorvyn 1.5.0

2026-10-19

Products: repositories that ship together, with shared workflows

  • Group projects into a product from the dashboard's All projects page: tick two or more projects (a backend and its mobile app, say) and choose New product. Products appear in the project switcher and can be renamed, changed or removed; removing one removes only the grouping.
  • Shared workflows across repositories. Each step of a product's workflow names the project it runs in. It works in that repository's own worktree, under that project's guardrails, and builds only on earlier steps of the same project. The workflow builder asks for the project on every step.
  • Changes stay in their project. A product run's page shows each project's changes on their own, with merge, push and pull request per repository, under that project's delivery guardrails.
  • One dashboard per product: its own agents, workflows, runs, approvals and analytics; code search and notes across all its projects, each result naming its project. Setup, guardrails, team links and goal planning stay with each project.
  • All projects lists your projects and products only; project actions are hidden there. In the activity feed, a workflow step shows once.
  • This release publishes only qorvyn; it uses the 1.3.0 server packages.

Qorvyn 1.4.0

2026-10-19

Team server: people, plans and upgrades for the operator

  • People shows each person's plan and projects. The admin People list has Plan (Free, Premium or Blocked) and Projects (active personal projects of the allowance, e.g. 1 / 10) columns and an All · Premium · Free filter.
  • A person's page shows the plan in full (allowance, end date, who granted it) and every personal project: active, archived or moved to an organization, with its number of repositories.
  • Upgrades (/admin/upgrades) lists everyone who was given Premium: the package, since, until, who granted it, and whether it is active or has ended.
  • This release changes only the team server; the npm packages stay at 1.3.0.

Qorvyn 1.3.0

2026-10-19

Team server: model registry for operators; one line per workflow step

  • AI models page for the server operator (/admin/models, only when Qorvyn Cloud is on): lists the models the AI gateway may call with their prices in credits per million tokens, registers a new model version, and switches a model on or off. Partner (Marketplace) models stay refused unless the server allows them; every change is in the audit log.
  • The activity feed shows each workflow step once. Under All, a step's agent run is no longer listed a second time; the Agents filter still shows agent runs.
  • Smaller npm releases. The six @factn-software/qorvyn-server-* packages now get a new version only when the server itself changes; otherwise a release publishes qorvyn alone, pinned to the server version already published. This release changes the server, so all seven are new.
  • Operator guide (docs/team-server.md): the admin area's organization and AI models pages, and why a shared account service uses QORVYN_ENTERPRISE_SCOPE=organization.

Qorvyn 1.2.2

2026-10-19
  • The project switcher stays after you switch. Opening a project from the switcher or the All projects page took the dashboard for the team web portal: the switcher disappeared and the footer said "served by a team computer". It now keeps the switcher on every project.

Qorvyn 1.2.1

2026-10-19

The dashboard on Windows, finding your coding agents, and a pass over every page

  • Windows: every project is listed and the switcher appears. The dashboard did not recognise Windows repository paths, so it showed no other projects and the link printed for a second project led nowhere. Projects were also named after their whole path; they now use the folder name, and existing ones are renamed when they open.
  • Claude Code and Codex are found where they are installed. Besides PATH, Qorvyn looks in the VS Code, VS Code Insiders, Cursor and Windsurf extensions and in the usual install folders, and says where it found each one. Detect again on the providers page checks again without restarting the dashboard; a tool that is there but will not start shows the real error instead of "not installed".
  • The mock provider is no longer offered in the dashboard unless something in the project already uses it. It stays available to tests and scripts.
  • Pages: setup bursts show as one line in the activity feed ("7 agents created"); charts with no data say so instead of drawing empty axes; Mark all reviewed on Project setup; readable workflow-template diagrams; buttons in notes and tables are no longer cut off; the audit log shows your local time; on a phone, cards stack and the project switcher stays reachable; a repository without a remote says how to add one.

Qorvyn 1.2.0

2026-10-19

Setup that fits the project, and one dashboard for all of them

  • Real stack detection. Setup now recognises Flutter and Dart, .NET (ASP.NET Core, Entity Framework Core, xUnit, NUnit, MSTest), Android and Gradle, Xcode and Swift packages, Python (Django, FastAPI, Flask, pytest), Go and Rust, CI systems (GitHub Actions, Azure Pipelines, GitLab CI, Jenkins, Bitbucket Pipelines, Docker) and data layers (Entity Framework Core, SQLAlchemy, sqflite, drift and others). A Flutter app with tests gets a QA agent, a .NET API with Entity Framework Core gets a database agent, and every agent is told the project's real build, test and lint commands (for example flutter test or dotnet test App.sln). Only file names and small manifests are read; no project code runs.
  • qorvyn setup --ai and qorvyn init --ai. The coding agent you already use (Claude Code or Codex, or --provider <adapter>) reads the project and proposes up to six agents made for it, can leave out template agents that do not fit, and says why. Proposals are checked strictly (only read, write, terminal and test permissions; no duplicates) and are marked for your review like every setup item; when a proposal cannot be used, setup uses the rules and tells you why.
  • One dashboard for all your projects. npx qorvyn dashboard serves every project on this computer: a project switcher and an "All projects" page, each project at its own address. Running it in a second repository reuses the open dashboard and links straight into that project; a project you set up later appears without a restart. Sign-in and the cross-site protections are unchanged, and no project is opened before the browser is signed in.

Qorvyn 1.1.1

2026-10-19

Indexing shows its progress, and is faster

  • You can see where indexing is. qorvyn init, qorvyn index and searches that first catch up on changes show one updating line: files done of the total, the percentage, the time left once it can be judged, and the file being read. In a pipe or CI, quick runs stay quiet and long ones print a short line every five seconds; --json output is unchanged.
  • Large first indexes are faster. Changed files are now saved in batches instead of one database commit per file: 20,000 files took 1.7 s instead of 3.8 s on a Mac. The difference should be much larger on Windows, where each commit is slow.

Qorvyn 1.1.0

2026-10-19

Safer account checks, projects that follow your product, and organization contexts

  • Account authorization is verified on your computer. Qorvyn now checks the signature of every authorization against Qorvyn's published key instead of trusting any server that says yes; a team server you sign in to can no longer replace the Qorvyn account service, and a repository linked to a team server that Qorvyn does not host is authorized by your account alone. If you saw No route POST /v1/capabilities, update to this version.
  • One identity, several places to work. qorvyn account shows your personal account and each organization you belong to, each with its own role and project allowance. Belonging to an organization never changes your personal allowance, and an organization's projects never use your personal projects.
  • A project is one product, not a clone. The same repository on a second computer (or a second clone) uses the project it already has instead of taking another slot. Qorvyn sends only hashes of repository addresses, never paths. qorvyn account archive, restore and transfer manage projects without deleting anything.
  • qorvyn init no longer links a repository to a team on its own. It tells you to run qorvyn team link, and sends nothing to the team server.
  • Privacy: reading a file through Qorvyn now redacts secrets (as search already did); .git contents and credential files such as Terraform state, kube and docker configs are never read; capability records are deleted 30 days after they expire.
  • Team server: organizations can have their own project allowance, set by the operator; Enterprise can be scoped to chosen organizations on a shared account service. Groundwork for managed cloud (wallets, an append-only ledger and an AI gateway) is included but off by default and is not offered yet.
  • Compatibility: against an account service older than this version, qorvyn account shows what that service can tell it.

Qorvyn 1.0.1

2026-10-19

Proper READMEs and licensing on every npm package

Version 1.0.0 was published without READMEs on the six server packages, and a number can never be reused on npm, so these fixes are 1.0.1.

  • Every package has a proper README: the six @factn-software/qorvyn-server-* packages now explain what they are, that qorvyn installs them automatically, what they contain and how to run them directly.
  • Licensing:
    • the Qorvyn Free Use License is now numbered (version 1.0, identifier LicenseRef-FACTn-Qorvyn-Free-Use-1.0);
    • it matches how the product works today: an account is required, protected commands check it online, the free plan covers three personal projects, and Team, Enterprise and other paid plans are licensed under their own agreements;
    • every package has a License section in its README.
  • Third-party notices: each package ships THIRD_PARTY_NOTICES.txt. The server packages reproduce the license of the Go standard library and of the nine Go modules compiled into the binary, as those licenses require. The main package lists its 96 runtime dependencies with their license texts. The audit fails a release without them.
  • Publishing guide: how to avoid approving the wrong staged version (the newest approval becomes latest).

Qorvyn 1.0.0

2026-10-19

The first public release

Qorvyn is on npm: npm i -D qorvyn (or npm i -g qorvyn for any repository, in any language). From 1.0.0 the version numbers follow semantic versioning: a major version is the promise that the CLI, the local runtime API and the SDK contract do not break within it. Everything below was built and tested in the 0.x releases; nothing earlier was published on npm.

  • For developers (Core, free personal plan):
    • cited project context through the CLI, MCP and the local API;
    • agents and workflows with approvals, guardrails and isolated worktrees;
    • safe delivery to GitHub, GitLab, Azure DevOps and Bitbucket;
    • the dashboard;
    • runs on macOS, Linux and Windows.
  • For teams: the Go team server on PostgreSQL, with live sharing, the control plane and runners (plans with approvals, leases, verified results, budgets), and a tamper-evident audit log.
  • Official SDKs for Dart, .NET, Go, Java, Kotlin, Python, Rust and Swift, version 1.0.0 as well.
  • Enterprise (a separate commercial build of the team server, also 1.0.0): policies, SSO and SCIM, audit export, runner and spending governance, assurance levels, signed audit checkpoints, legal holds.
  • Accounts: a free personal plan (no expiry, three personal projects), decided online by the server; no offline grace period (online enforcement).
  • Distribution: the server binaries are @factn-software/qorvyn-server-<os>-<cpu>, installed automatically; releases are signed (publishing).

Early access (0.x)

Releases before 1.0, while Qorvyn was in early access.

Qorvyn 0.33.0-alpha.0 2026-10-19

A free personal plan, and a public npm release path

  • The personal plan is free and does not expire. It replaces the seven-day trial. Every account starts on it with up to three personal projects; teams and Enterprise workspaces have no such limit. The server decides, so changing the local clock or reinstalling changes nothing. Migration 0007 turns the trial status into free. qorvyn activate status shows your plan (Free or Pro) and your Enterprise workspaces.
  • Public releases are possible, on purpose. Builds stay private (unpublishable) by default. npm run release:public builds the packages for npm and checks that they hold no sources, source maps, tests or keys. docs/publishing.md has the steps, in order, and scripts/verify-published.mjs checks the real install on each operating system.
  • Server binaries under the organization: the six platform packages are now @factn-software/qorvyn-server-<os>-<cpu>, so the factn-software npm organization controls who can publish them. The main package stays qorvyn, so npm i qorvyn and npx qorvyn are unchanged.
  • Docs and website describe the free plan, the online account check before protected commands (there is no offline grace period) and what it sends.
Qorvyn 0.32.0-alpha.0 2026-10-19

Every platform: macOS, Linux and Windows

  • Windows works for agent runs (platforms):
    • Starting agent CLIs: Claude Code, Codex, Gemini CLI, OpenCode and az are .cmd shims on Windows. Qorvyn now starts their real target directly, with no shell, so prompts with quotes or newlines arrive as they are and cannot run anything. A batch file it cannot imitate safely is refused with a clear message.
    • Stopping runs: cancel and timeout end the whole process tree there (no process groups on Windows).
    • Environment: the system variables that Node, Git and most CLIs need are passed to agents. Secrets still never are.
  • Windows ARM64 joins the Go server packages (qorvyn-server-win32-arm64), next to macOS (arm64, x64), Linux (x64, arm64) and Windows x64.
  • Tested on all of them: the whole suite passes on macOS and on Linux (arm64, Docker node:22). A new manual workflow (.github/workflows/platforms.yml) runs the type check, unit tests and a smoke test on Linux x64 and arm64, macOS and Windows before a release. The smoke test (scripts/smoke.mjs) sets up a repository, checks that no file is added to it, searches, and runs a writing agent in its own worktree.

Account and licensing

  • Online enforcement (operations): the server decides about accounts, the seven-day personal trial, three personal-project slots, device revocation, supported client versions and five-minute capability leases. A lease is consumed once, before the protected command runs. Rollout has an audit mode (records the decision, still allows) and an enforce mode. The documentation is plain about the limit: downloaded local code can still be inspected or patched, and enforcement protects Qorvyn's own services.
  • Device keys on macOS live in the login Keychain; other systems keep the file-based key.

Other

  • Official SDKs for Dart, .NET, Go, Java, Kotlin, Python, Rust and Swift, over one OpenAPI contract of the local runtime (sdks/, contracts/).
  • Control plane: independent verifier tasks.
Qorvyn 0.31.1-alpha.0 2026-10-18

Fixed

  • The team server's sign-in pages showed without styles since the Go server (0.28). Affected: the home page, device code, sign-in, email code, device approval, error and not-found pages. They sent only the page's text, without the document, title and stylesheet. Now they render whole again. See the incident note. The dashboard and the admin area were not affected.
  • /favicon.ico now shows the Q mark (it answered 404).
  • A new test checks every page and resource. It crawls every web page signed out, as a member and as the system admin. Each page must be a whole document with styles its security policy allows, and every stylesheet, script and image must load.
  • Data governance: the documentation now lists what the control plane keeps on the server:
    • runs started through it, with their results (output text, commit references, check results, costs);
    • runners and budgets;
    • the audit chain. Runs you start on your own computer still never reach the server.
Qorvyn 0.31.0-alpha.0 2026-10-18

Enterprise moves out of Core; a tamper-evident audit log for everyone

  • Enterprise is its own Go module, in the Qorvyn Enterprise repository (ADR 0008).
    • It builds qorvyn-server-ee, the Core server with Enterprise attached. Core no longer contains any Enterprise code.
    • qorvyn-server is Core only.
    • The deploy script builds the Enterprise server when its checkout sits next to Core.
    • Extensions attach through internal/ext: they add routes and migrations, and use the control plane's hooks. Those hooks can only tighten what Core decides, never loosen it.
  • The audit log is a hash chain.
    • Each new entry is linked to the previous entry of its workspace by SHA-256 (QORVYN-AUDIT-1 in pkg/protocol).
    • GET /v1/workspaces/{ws}/audit/verify recomputes every link. It reports the first entry that was changed, removed or inserted outside the server.
    • Entries written before this version have no link and are counted, not checked.
  • Budgets:
    • a task can reserve against several budgets at once: its run's, and those an extension adds such as a monthly workspace budget;
    • each attempt remembers the budgets it reserved against, so its result settles exactly those.
  • Safer locking: every control-plane change takes its workspace's audit lock first, and the lease sweeper handles each expired lease on its own. Concurrent claims, reports and sweeps cannot deadlock.

Qorvyn Enterprise (the qorvyn-server-ee build), new

  • Governance (license feature governance):
    • dedicated runner pools;
    • minimum trust for each privilege and for external effects;
    • workspace concurrency quotas;
    • required budgets;
    • four-eyes spending approval above a threshold: the owner sets the budget, and another admin approves;
    • a monthly workspace budget;
    • cost reports.
  • Assurance levels:
    • *enhanced*: every task has acceptance checks;
    • *high*: on top of that, people approve every plan, agent tasks need managed runners, and anything with external effects comes after an approval.
  • Compliance (license feature compliance):
    • signed checkpoints: each workspace's audit chain is signed daily or on demand;
    • anchoring: each checkpoint is written once to an Azure Blob container with a locked retention policy, and also sent to audit webhooks;
    • exportable proofs: they can be verified offline;
    • legal holds: retention removes nothing while a hold is active. A broken chain is never signed: it is recorded and reported.
  • Existing licenses keep their features. Governance and compliance need a license that includes them.
Qorvyn 0.30.0-alpha.0 2026-10-18

The control plane and runners (milestones 1–2 of the v3 plan)

The team server can now plan and run work across computers (ADR 0007). Nothing changes until an admin enrolls a runner.

  • Goals and plan versions:
    • every plan is validated: tasks, dependencies, no cycles, known privileges and trust levels;
    • every plan is classified: *low risk*, or *elevated* when it has privileges or external effects;
    • versions are immutable. An elevated plan always waits for an admin, even when a workspace approves low-risk plans automatically, and a runner can never approve one.
  • Runs: a run executes one approved plan version and keeps every attempt of every task. The dashboard and CLI parts come later; the API is /v1/workspaces/{ws}/goals|plans|runs|tasks|budgets|runners|control.
  • Separate rights:
    • propose a plan and start runs: members;
    • approve plans and decide on tasks: admins;
    • add runners: admins;
    • set budgets: the owner.
  • Runners: qorvyn runner enroll <server> <token>, then qorvyn runner start in a repository.
    • Identity: each runner is its own key, enrolled with a one-time token, and is never a person's device. The admin sets its trust and labels; what the runner says about itself is only shown.
    • Leases: runners connect outbound and lease tasks. Each lease has an expiry and a fencing epoch, and a report from an old lease is refused.
    • Placement: trust is never downgraded, labels must match, each runner's slots and each run's concurrency hold, and workspaces never mix.
    • What a task can make a runner do: a task names an agent of the runner's project and instructions; it never carries a command. Checks are commands the runner's owner configures (--check tests="npm test"), privileged capabilities need the owner's --approve, and the project's guardrails apply as always.
  • Failures:
    • provider limits and lost leases retry;
    • the same quality failure twice stops retrying;
    • a security failure pauses the run and keeps the evidence;
    • a task with external effects whose runner disappears is never retried blindly: an admin checks and chooses retry, done or failed.
  • Completion is not acceptance: a task is verified only when its required artifacts are present and its checks passed on the same commit as the result. Evidence from another commit is refused.
  • Budgets:
    • amounts are integer micro-units, reserved atomically before a task starts;
    • a run that cannot afford the next task pauses;
    • costs settle as providers report them, and unreported costs are counted as unknown, not zero.
  • Planning documents: the target, an audit of what exists and the delivery plan.
Qorvyn 0.29.0-alpha.0 2026-10-18

npm install brings the Go server

  • The Go server comes with the package: one small package per platform (macOS and Linux on Intel or ARM, Windows on Intel), installed automatically. npx qorvyn server start runs it, with no Go toolchain needed. QORVYN_SERVER_IMPL=ts still starts the old TypeScript server, until it is removed.
  • Linking a project checks your access first: qorvyn team link proves you can read the repository, using the sign-in you already have on this computer:
    • GitHub: a saved token, or gh auth token;
    • GitLab: glab;
    • Azure DevOps: a saved token, or az account get-access-token;
    • Bitbucket: an app password. The server checks the proof with the provider, then records the project as checked "from the CLI". The token is used once and never stored. --no-check skips the check.
  • Deployment: the one-time cutover script starts the App Service before deploying (a deploy that restarts a stopped site waits forever).
Qorvyn 0.28.0-alpha.0 2026-10-18

The team server is now Go on PostgreSQL

  • One Go binary (qorvyn-server), on PostgreSQL (ADR 0006). It has every feature the TypeScript server had:
    • sign-in, devices and signed requests;
    • workspaces, members, invitations and ownership;
    • projects, sync with the hash chain, and live streams;
    • the web portal and the system admin area;
    • Git connections, the project dashboard relay, account keys and usage statistics.
  • Measured: about 4× more signed requests per second than the Node server on the same machine, and a quarter of the memory.
  • PostgreSQL in Azure (Flexible Server) with Microsoft Entra sign-in only: the server uses its managed identity and there is no database password. Point-in-time restore for 14 days.
  • Enterprise built in, turned on by the license, as before:
    • policies;
    • audit export, retention and HMAC-signed webhooks (secrets now encrypted at rest);
    • SSO group roles, SCIM 2.0 and seats.
  • Layered code with enforced rules: handlers → services → repositories; SQL only in internal/store (checked on every go test).
  • Safer checks:
    • the access-token check for other Git hosts refuses private addresses at the moment it connects, so DNS rebinding cannot reach the server's network;
    • paths with .. are refused.
  • Your data moves as it is: ids, signatures, the hash chain and sessions are kept. People stay signed in, and devices keep working.
  • Tests: the whole suite runs against either server (QORVYN_TEST_SERVER=go npm test).
  • For development: a local Docker PostgreSQL (npm run db:up), and npm run go:dev.
Qorvyn 0.27.1-alpha.0 2026-10-17
  • Faster portal (found by load testing): workspace pages handle 5,700 requests a second instead of 223, with a median of 8 ms instead of 220 ms.
    • Dates are formatted with one shared formatter (making one per date cost about 1 ms each).
    • The overview checks whether an invitation is open instead of counting them all.
    • Members lists the newest 100 pending invitations, with the total.
  • Database indexes for the lists every request uses: invitations, memberships, projects, devices, identities, ownership transfers, events by project, shared items and audit actions. Applied automatically on start (migration 9).
  • Decided: the team server moves to Go on PostgreSQL (ADR 0006); this server stays in service until the Go one passes the same tests. Engineering standards are in docs/standards/.
Qorvyn 0.27.0-alpha.0 2026-10-17

Projects from your Git provider, with access checked

  • Git connections: a new page for workspace admins. Connect GitHub (by installing the Qorvyn GitHub App and choosing its repositories), GitLab (gitlab.com or self-managed), Azure DevOps (Microsoft work accounts, every organization you are in) or Bitbucket. Each provider's own sign-in page is used, and Qorvyn gets read access to repository names and addresses only, never code.
  • Add project → pick a repository: a searchable list of the repositories the connection can see. Adding one makes it a project with all its clone addresses (https and ssh). The provider is asked again when you add it, and repositories already in a project are marked.
  • Any other Git host: Add project → Another Git host (Gitea, GitLab self-managed, Bitbucket Data Center, AWS CodeCommit…) checks once that an access token can read the repository, then forgets the token. Only public addresses are contacted.
  • Typed addresses still work. Those projects show as *address only*; projects checked with a provider show where (for example *GitHub · acme/api*). Editing a project's addresses by hand drops the check.
  • Security:
    • provider tokens are encrypted on the server (AES-256-GCM, QORVYN_SECRET_KEY), refreshed when they expire, and never shown, logged or audited;
    • a connection attempt counts only in the browser that started it, once, within 15 minutes;
    • a person's own sign-ins stop being used when they leave the workspace;
    • everything is in the audit log (git.connected, git.disconnected, project.linked).
  • System admin: each workspace's page lists its Git connections (provider, account, who connected it, whether it still works), with Disconnect.
  • Operators: register each provider's app once (docs/team-server.md → Git providers). provision.sh passes the settings through.
Qorvyn 0.26.1-alpha.0 2026-10-17
  • Invite links: in Invite people, Create an invite link (member or viewer) to share in a chat. It appears once on the page with a Copy button, works once for 7 days, and is listed under pending invitations, where it can be revoked. Links never make admins.
  • Links stay out of addresses: when the server cannot send email, the invitation links are shown on the page, no longer in the page address (which browser history and request logs keep).
  • Copy buttons: the portal's only script, a small file from the same server (/ui/portal.js); everything else works without it.
Qorvyn 0.26.0-alpha.0 2026-10-17

The web portal, redesigned (one look with the dashboard)

  • Same app as the dashboard: the portal uses the dashboard's own stylesheet, icons and sidebar. A workspace switcher at the top (every workspace you are in, Create workspace), and your account menu at the bottom (system admin, sign out). The system admin portal uses the same shell.
  • Overview: a getting-started checklist for new workspaces (add a project, invite your team, connect a computer), the numbers that matter, projects with live status, recent runs.
  • Members: Invite people by email (several at once, with a role); the email's link signs them in and joins them. Change roles and remove members (same rules as the CLI), and see and revoke pending invitations. Without email set up, the portal shows the link to pass on.
  • Settings: rename the workspace, leave it, and (owner) delete it after typing its address.
  • Details: page headings with the main action on the right, compact action menus, empty states that say what to do, focus outlines, phone layouts; every form in a modal.
Qorvyn 0.25.1-alpha.0 2026-10-16
  • Portal: example repository addresses are written without a scheme (github.com/acme/app); any form is accepted (https, ssh or bare).
Qorvyn 0.25.0-alpha.0 2026-10-16

Tenant portal: projects

  • Manage projects in the portal: workspace admins add a project (name and repository addresses), edit it or remove it. A teammate's clone with a matching address joins the project on npx qorvyn init.
  • Each project at a glance: its repositories, whether a computer serves its dashboard (Open dashboard), and Connect a computer with the exact commands. Projects also show on the Overview.
  • Every form opens in a modal: in the tenant portal and the super admin portal (roles, ownership, suspending, deleting, erasing, signing out). Destructive actions say what will happen and, where it matters, ask for the name to be typed.
Qorvyn 0.24.1-alpha.0 2026-10-16
  • Agents & providers in the web portal: the page loads again. The portal may see which keys are set (names and status, never values); setting, importing or testing keys still happens only on the computer itself.
Qorvyn 0.24.0-alpha.0 2026-10-16

The full dashboard in the team's web portal

  • Share a project's dashboard: npx qorvyn dashboard --share on a computer with the project. The portal's Projects page shows who is serving it and Open dashboard: the same dashboard as on your computer (workflows, runs, Describe a goal, approvals, agents, code search, notes, guardrails, analytics, live activity), answered by that computer over an outgoing connection.
  • Same rules, checked by the server first: members of the workspace only; viewers look, members act, admins also change guardrails and project setup; anti-forgery header on every change; every action in the audit log (relay.action).
  • Stays on the computer: keys and secrets, and provider set-up (which commands run). Results pass through the server and are not stored.
  • Server: relay routes, larger bodies only for relayed answers, clean disconnect; the role table gains relay.serve, relay.act and relay.admin (Go conformance vectors updated).
Qorvyn 0.23.1-alpha.0 2026-10-16
  • Super admin portal is easier to reach: super admins who sign in with Microsoft land on the system admin portal (/admin); opening /admin goes straight to the Microsoft sign-in. A super admin signed in with an email code sees a banner in the tenant portal with Sign in with Microsoft.
Qorvyn 0.23.0-alpha.0 2026-10-16

Free account

  • Qorvyn is free with a free account. qorvyn activate signs in once (Microsoft or an email code) and saves a key signed by FACTn Software: valid 30 days, renewed automatically, with 14 days of grace offline. Commands ask for it; help, --version, activate, telemetry and uninstall always work. qorvyn activate status | remove.
  • Checked on your computer against FACTn Software's public key: a key signed by anyone else, or edited, is refused.
  • Account server: POST /v1/account/key (with QORVYN_ACCOUNT_SIGNING_KEY). Disabled or erased people get no new key. Super admins see each person's activation and an "Activated accounts" total. Schema 7.
  • Privacy: the account is never linked to the anonymous usage statistics (docs/data-governance.md).
Qorvyn 0.22.0-alpha.0 2026-10-16

Distribution

  • Customer package: npm run release builds the package people receive: minified bundles without comments, source maps, sources or tests, type definitions for the public API only, and a minified dashboard. Bundles carry the copyright notice.
  • Free Use License: Core is free to use (including for commercial work) under a proprietary license that does not allow modifying, reverse engineering, redistributing or getting around license checks. Your code and ideas remain yours.
Qorvyn 0.21.2-alpha.0 2026-10-16
  • Ownership and license: Qorvyn is owned by FACTn Software (Pvt) Ltd. Core is proprietary for now (all rights reserved, free during early access) and stays private until it is mature (ADR 0005); the plan to open it later is on hold. Contact: factnsoftware.com.
Qorvyn 0.21.1-alpha.0 2026-10-16
  • Usage statistics: the dashboard reports which page was opened (the page's name only), as documented in docs/telemetry.md. It was left out of 0.21.0.
Qorvyn 0.21.0-alpha.0 2026-10-16

Anonymous usage statistics (opt-out)

  • What: weekly counts of commands, dashboard pages, provider kinds, run outcomes, duration buckets and error categories, with version, OS and a random install id. Never code, file or repository names, prompts or outputs. Every field is listed in docs/telemetry.md.
  • Your control: a one-time notice; qorvyn telemetry status | show | on | off; DO_NOT_TRACK=1 and QORVYN_TELEMETRY=0; always off in CI; organizations can turn it off for everyone with "telemetry": false in the workspace policy (Enterprise).
  • Collector: --accept-telemetry on the operator's team server accepts only the documented report, never stores IP addresses, keeps reports 13 months and shows totals on the super admin Telemetry page. Optionally forwards each report to Azure Application Insights (QORVYN_TELEMETRY_APPINSIGHTS), from the server, so no user's address reaches Azure.

Data governance

  • New document docs/data-governance.md: what is kept where, for how long, who can see it, how it is protected, and your rights.
  • Erase a person (super admin): removes memberships, devices, sign-in identities and sessions, and anonymises the account.
  • Super admin visits are recorded: opening a tenant's page is in the audit log (admin.tenant_viewed).
  • Browser sessions and their IP addresses are deleted 30 days after they end. Schema 6 stores usage reports.
Qorvyn 0.20.1-alpha.0 2026-10-16

Dashboard: calmer page loading

  • No progress bar, no dimmed old page: a page that loads quickly simply appears. A slower one shows a skeleton of its own layout (its real title, KPI row, cards and tables in the same places) that the content replaces without anything moving.
  • No sideways jumps: the scrollbar's space is always kept, so the layout keeps its width when a page gets taller or shorter (dashboard and team server pages).
  • Scrolling: opening another page starts at the top; refreshing the same page after an action keeps your place. Pages fade in without sliding.
  • Sidebar: the Enterprise label fits inside the sidebar.
Qorvyn 0.20.0-alpha.0 2026-10-16

Team server: super admin area

  • For the server's operator (/admin, or Super admin in the dashboard header). Super admins are listed in --super-admin / QORVYN_SUPER_ADMINS and must sign in with the identity provider (Microsoft), never an email code. To everyone else the area does not exist.
  • Overview: tenants, people, devices, browser sessions, projects and shared changes; version, edition, plugins, sign-in methods, database size, backups and recent super admin actions.
  • Tenants: every workspace with its owner, members, projects and runs. Per tenant: change roles, remove members, make someone owner, revoke invitations, remove projects, read all shared agents, workflows and knowledge, and its audit log. Suspend or resume a tenant (suspended: refused to everyone, devices and sync included), or delete it after typing its slug.
  • People: everyone with their workspaces, devices and browser sessions. Disable or enable an account (disabled: no sign-in, sync or dashboard), sign someone out everywhere, or sign out one device.
  • Audit: the whole server's log, searchable. Every super admin action needs the page's token and is recorded as admin.*.
  • Plugins: a new onWorkspaceDeleted hook removes a plugin's own data with a deleted tenant.
  • Database: schema 5 (disabled people, suspended tenants, how each browser session signed in).
Qorvyn 0.19.0-alpha.0 2026-10-16

Team server: web dashboard (read-only, first stage)

  • Sign in with a browser: /signin (or Open the dashboard on the home page) uses the same Microsoft or email-code sign-in as devices and starts a browser session. Nothing to install.
  • Pages per workspace: an overview (waiting for approval, running, failed, projects, members, shared items), runs with their steps and filters by status, projects and their repositories, members and roles, shared agents, workflows and knowledge, and the audit log for admins.
  • Same rules as the CLI: every page checks membership and role; other workspaces are not revealed. Runs show only what people chose to share (names and states, never code or outputs).
  • Sessions: a random cookie whose hash is stored, 7 days at most and ended after 24 hours idle; sign-out needs the page's own token. A person deactivated by their organization is signed out of every browser.
  • Database: schema 4 adds browser sessions. The server copies its database before upgrading, as before.
Qorvyn 0.18.0-alpha.0 2026-10-16

Team server

  • Sign-in codes by email: --email-login acs sends them with Azure Communication Services Email, authenticated by the server's managed identity (no keys stored). Settings: --acs-endpoint / QORVYN_ACS_ENDPOINT and --email-from / QORVYN_EMAIL_FROM. deploy/azure/provision.sh … email creates the service, an Azure-managed sending domain and the role.
  • Clear when an email can't be sent: the page says so (with other ways to sign in), and the server log says why.
  • Console mode is honest: with --email-login console the page no longer says "We sent a code"; it says the code is in the server's output.
Qorvyn 0.17.2-alpha.0 2026-10-16

Team server

  • Home page: opening the team server's address in a browser no longer shows "Not found". It explains that people use the server from Qorvyn on their own computer, shows the exact qorvyn login --server … command for this server, offers I have a device code, and lists the version and sign-in methods. Unknown pages link back to it.
  • Sign-in pages on phones: the card fits the screen instead of running past both edges.
Qorvyn 0.17.1-alpha.0 2026-10-16

Team server

  • Copy before upgrading: before the server changes its database structure, it saves a copy next to the database (server-pre-v<new>-from-v<old>-<time>.sqlite).
  • Backups reach Blob Storage: a nightly copy whose upload failed is retried every hour until it is uploaded. Error messages now say which step failed (the managed identity token, or the upload) and what to check.
Qorvyn 0.17.0-alpha.0 2026-10-16

Sync integrity

  • Tamper-evident history: every shared change is linked to the one before it by a hash chain.
    • Each device verifies every link as it syncs, and stops with a clear integrity error if past changes were altered, removed or reordered, even by the server.
    • Existing servers link their earlier changes once at startup.
  • Replica check with automatic repair: after each sync, the device compares a fingerprint of its shared items and the history with the server's. On any mismatch it rebuilds its copy automatically and verifies the whole history from the first change. Unsent changes are kept.
  • Commands: qorvyn sync verify checks now; qorvyn sync rebuild re-downloads and re-verifies everything on demand.
  • Resolving conflicts: the dashboard's Team page shows each conflict side by side, with Keep mine (published on top of the latest version) and Take theirs (the shared version stays and your local copy is updated). CLI: qorvyn sync resolve <event> mine|theirs.
  • Integrity status: the Team page shows "Integrity verified" or the problem found, with Verify now and Rebuild from server.
Qorvyn 0.16.1-alpha.0 2026-10-16
  • Team server on Azure App Service and other platforms:
    • QORVYN_SQLITE_JOURNAL=delete uses a database mode that is safe on network storage; run a single instance;
    • --allow-host / QORVYN_ALLOWED_HOSTS adds host names such as the platform's own address.
  • Built-in server backups: --backup-dir / QORVYN_BACKUP_DIR makes a daily consistent copy and keeps 7. With QORVYN_BACKUP_BLOB_URL, each copy is also uploaded to Azure Blob Storage with the platform's managed identity, so no keys are stored.
Qorvyn 0.16.0-alpha.0 2026-10-16
  • New brand: the Qorvyn Q is the dashboard logo and browser-tab icon, and appears on the team server's sign-in pages and in the README.
  • Edition label: the dashboard and the sign-in pages show Core (open source) or Enterprise. Enterprise appears when the linked team server runs a licensed Qorvyn Enterprise, and the dashboard Q gets a shield badge.
  • License: Qorvyn Core is licensed under Apache-2.0 (LICENSE, NOTICE), copyright Supun Wijegunawardhana.
  • Deployment files: deploy/azure/ holds the systemd service, Caddy HTTPS proxy, VM setup and nightly backup scripts for running the team server.
Qorvyn 0.15.1-alpha.0 2026-10-15
  • qorvyn team api <METHOD> /v1/... [--body json]: a signed request to any team-server route, for admin features of server plugins.
  • qorvyn server start --oidc-trust-email: for your own organization directory (for example Microsoft Entra ID). People provisioned in advance are recognised on their first sign-in.
  • New package exports: qorvyn/server and qorvyn/team-client, for embedding and testing.
Qorvyn 0.15.0-alpha.0 2026-10-15

Team server plugins

  • Server extensions: qorvyn server start --plugin <module> (or QORVYN_SERVER_PLUGINS) loads extensions. A plugin can:
    • add routes for signed-in devices, or its own HTTP endpoints (for example SCIM);
    • check or refuse sign-ins (for example seat limits), and act after sign-in (for example group-to-role mapping);
    • receive every audit entry;
    • supply a workspace policy.
  • Visibility and boundaries: /v1/health lists loaded plugins and their features. Plugins cannot replace core routes. The interface is exported as qorvyn/server-plugin.
  • Microsoft Entra ID: sign-in also works when Entra sends the address as preferred_username. Identity-provider group ids reach plugins.

Organization policies, enforced on every device

  • Fetched with each sync: a linked project receives its workspace's policy every time it syncs.
  • Combined with the project's own guardrails:
    • denied capabilities, protected paths, never-index paths and protected branches are added together;
    • allowed providers are intersected;
    • the shortest time limit wins;
    • delivery steps the organization blocks stay blocked.
  • Stricter only: a project can make limits stricter but never loosen the organization's. The Guardrails page shows organization limits as locked.
Qorvyn 0.14.0-alpha.0 2026-10-15
  • The dashboard never freezes:
    • Checks that run a tool, such as provider versions and the git host sign-in, are cached for a minute and refreshed in the background.
    • The git host check starts when the dashboard starts.
    • Pushing and opening or merging pull requests no longer hold up other requests.
  • Pages show right away: slow parts (the Delivery agent, model lists, a run's Changes panel) appear as skeletons and fill in.
  • Visible progress:
    • a loading bar at the top while a page loads, with the current page dimmed instead of frozen;
    • any button whose action takes a moment shows a spinner;
    • pages fade in, and buttons respond when pressed.
Qorvyn 0.13.0-alpha.0 2026-10-15
  • Get changes in my working folder: a run's changes become ordinary uncommitted edits on your branch. They show in VS Code Source Control to review and commit yourself. Switch to the run's branch checks it out instead. CLI: qorvyn workflows deliver <run> --apply | --switch.
  • A GitHub account per project: with several accounts signed in to gh, choose one on the Agents page (Delivery agent). Pushes and pull requests use that account's token, and your active gh account is not switched.
  • Clear access errors: GitHub's "Repository not found" now says which account was refused and how to fix it.
  • Out-of-date dashboard detected: if Qorvyn is updated while the dashboard is running, the page asks you to restart it, instead of an action failing with an unclear error.
Qorvyn 0.12.0-alpha.0 2026-10-15

Deliver what a run changed

  • Changes from this run on every run that changed code:
    • the branch, commits and files, and how to look at them;
    • Merge into your branch, Push & open pull request, Merge pull request and Discard.
  • Agents still commit only to their own branch, and your working folder is never touched.
  • Merge safety: a merge is refused while your checkout has uncommitted changes, and conflicts are found before anything is touched.
  • CLI: qorvyn workflows deliver <run> [--merge | --push | --pr | --merge-pr | --discard].

Delivery agent: GitHub, GitLab, Azure DevOps, Bitbucket

  • Detects the host from your remote. It opens and merges pull requests with gh, glab, az repos or the Bitbucket API. Any other host gets a link.
  • It is not AI: it runs fixed, checked commands, and every action is audited.
  • Access: your existing CLI login, or a dedicated token saved under Keys and given only to that host's CLI. The Agents page shows the account, its permissions and how to fix a missing one.

Delivery guardrails

  • Allow or block each step: local merge, push, pull requests, merging pull requests.
  • Protected branches are never merged into (default main, master, release/*).
  • Only approved runs can be delivered: a run must finish with every human approval passed.
  • After approval: do nothing, open a pull request, or merge automatically.

Live progress

  • Describe a goal plans in the background. You see each step: understanding the goal, exploring the code (the files Claude Code or Codex reads and the searches it runs), designing the steps, and checking the plan.
  • Keep working: close the dialog and a pill shows progress; a toast with Review plan appears when the plan is ready.
  • Animated reveal: plans appear step by step, and the full task of each step can be expanded.
  • Running steps show live what the agent is doing ("Reading …", "Running …") and how long it has been going. Agent run pages have a live Activity log.

Planning reuses your workflows

  • The planner checks your saved workflows first and reuses one that fits, with your goal as its input.
  • New plans are saved under a name you choose and become reusable. Saving the same steps twice keeps one copy.
  • qorvyn do --new plans from scratch anyway, and --save-as <id> names the workflow.
Qorvyn 0.11.0-alpha.0 2026-10-15

Keys you can check before you rely on them

  • Live status in the key dialog, also in the provider form, as you type the name:
    • saved in Qorvyn;
    • available to this dashboard now;
    • in your shell profile but not visible to the dashboard (it started before the key was set);
    • not set anywhere.
  • Copy from your shell: one click (or qorvyn keys import <NAME>) copies a key from your shell profile into the Keychain. The value never passes through the browser.
  • Guidance: a link to where to get the key (Anthropic, OpenAI, OpenRouter, Google AI Studio, Groq, Mistral, Cursor) and what it should start with.
  • Paste mistakes fixed: export NAME=…, quotes, Bearer and spaces are removed. A warning appears when a key does not look like that provider's.
  • Test: checks the pasted or saved key against the provider and shows the provider's own answer, e.g. "refused it (401: invalid api key)".
  • CLI: qorvyn keys check <NAME> [--test].
Qorvyn 0.10.0-alpha.0 2026-10-15

Keys, managed in Qorvyn

  • Set API keys for any provider in the app: under Agents & providers → Keys, inline when you add a chat API provider, or with qorvyn keys set <NAME>.
  • Write-only: you can set, replace or remove a key, but nobody can read it back. It is never sent to the dashboard, never written to the audit log, and never passed on the command line.
  • Stored in the macOS Keychain, or in an encrypted file on other systems.
  • Given only where needed: only the provider that names a key receives it, for its own runs.

Choose a model per agent

  • Each agent card has a Model picker with the provider's models:
    • Claude Code: aliases and model names;
    • Codex: its own model list;
    • chat APIs: the API's model list;
    • added command providers: a list or command you configure.
  • Provider default is used when you don't choose. Switching provider resets the agent to that provider's default. From the CLI: qorvyn providers models <id>.

Dashboard

  • One dialog everywhere: title bar with a close button, a scrolling body, and Cancel next to the main action. Destructive actions use a red button.
  • Typed toasts: every action reports success, warning or error with an icon. Errors stay longer and can be dismissed.
  • Layout: the Providers, Keys and Agents section headers are aligned with their buttons, and the mock provider card has a shorter title.
Qorvyn 0.9.0-alpha.0 2026-10-15

Add any provider

  • Add provider, on Agents & providers or with qorvyn providers add, works with any coding agent or model.
    • Command providers: any CLI agent. Presets cover Cursor, Gemini CLI, Aider and OpenCode, or point it at your own command.
    • Chat API providers: Anthropic (Claude) or anything OpenAI-compatible, such as OpenAI, OpenRouter or a local Ollama.
  • Safety for tools Qorvyn does not know:
    • every run happens in its own worktree;
    • changes are kept only when the agent may write, otherwise they are discarded and the run says so;
    • shell and network use is declared, and a run must accept what Qorvyn cannot switch off;
    • chat APIs never touch files.
  • Keys: they are never stored. A provider names the environment variable that holds its key, and only the variables it names reach it.
  • Everywhere: added providers apply to every project on this machine and work with agents, workflows, the planner and guardrails.

Also

  • The provider cards explain what mock is: a stand-in with no AI, for trying workflows for free and for tests.
  • An open dashboard tab now offers Reload when Qorvyn or the dashboard was updated, so you never look at an old page.
Qorvyn 0.8.0-alpha.0 2026-10-15

Project setup

  • Qorvyn sets up each project itself. qorvyn init (or qorvyn setup) reads what the repository already has: instruction files, Claude Code agents, skills, commands, MCP servers and the stack.
  • What it creates:
    • agents: your existing Claude Code agents, plus templates that fit the stack;
    • workflows that use your own reviewers;
    • knowledge notes from your instructions, citing file and line.
  • Starts safe: everything starts read-only and nothing is written to the repository. --dry-run previews; --no-setup skips it during init.
  • Your work is kept: re-running never overwrites your edits and never brings back what you removed.

Review and refine

  • A new Project setup page lists what was found and what was created, with a "needs review" count in the menu and on the overview.
  • For each item: Mark reviewed, Refine (the agent or workflow editor) or Remove. From the CLI: qorvyn setup review.
  • Reviewing grants nothing. You give access separately, on each agent, when you decide to.

Guardrails you manage

  • A new Guardrails page and qorvyn guardrails command manage five limits:
    • denied capabilities;
    • protected paths;
    • allowed providers;
    • maximum run time;
    • paths never read or indexed.
  • Enforced by Qorvyn itself:
    • a run that changes a protected path is discarded;
    • other providers are blocked, and the planner keeps to the allowed ones;
    • a denied capability is never effective;
    • the time limit is capped.
  • Every change is in the audit log. Approval of privileged capabilities on each run stays fixed.
Qorvyn 0.7.0-alpha.0 2026-10-15

Describe a goal

  • "Describe a task" is now Describe a goal. You describe what you want, and the planner turns it into a workflow of steps, each with its own agent and task. qorvyn do "<goal>" is unchanged.

Project files, local and never committed

  • Hand-written files: write agents and workflows as YAML in <project>/.qorvyn/agents/ and .qorvyn/workflows/.
  • Loaded automatically: from the CLI and the dashboard. A changed file becomes the next version, unchanged files are skipped, and a broken file is reported with the reason and never blocks the others.
  • Never a git change: qorvyn init lists /.qorvyn/ in .git/info/exclude, inside .git. The files never show as changes and are never committed.
  • Grants nothing: an agent loaded from a file can only read until you grant more.
  • Commands: qorvyn files status | load | export [--force]. The dashboard's Agents and Workflows pages show what loaded and any errors, and can export your current agents and workflows to files.
Qorvyn 0.6.1-alpha.0 2026-10-15
  • Search everything (⌘K) fixed: the box spans the full width with no stray focus box.
  • Search covers more: it always offers Search code for "…" and also finds runs and notes, not only pages, workflows and agents.
  • No duplicate buttons: "Describe a task" and "Run a workflow" now live only in the top bar. Page headers keep actions specific to the page, such as "Build a workflow".
  • Accurate activity feed: a plan is recorded only when it is saved, so the feed never links to a plan that does not exist.
Qorvyn 0.6.0-alpha.0 2026-10-15

Tasks without a template

  • Describe a task; the planner designs the workflow. It picks the agents, the order, what runs in parallel and where you decide, then shows you the plan. Use qorvyn do "<task>" or Describe a task in the dashboard.
  • Planners:
    • claude-code (default) or codex, read-only: the planner may read the code to ground the plan.
    • rules: free, instant, no AI.
  • Validation: every plan is checked like a hand-written workflow. An invalid plan gets one retry with the exact error, then the rules planner takes over, and Qorvyn tells you.
  • Safety: plans use your own agents first, otherwise built-in templates created read-only. Privileged steps still need approval, and any plan that changes files ends with a human approval.
  • Reuse: planned workflows are saved, so you can run them again, edit them in the builder or share them.

Who does the work, from the CLI too

  • --providers cc-codex | codex-cc | claude-code | codex | mock and --step-adapter step=adapter on qorvyn workflows run and qorvyn do.

Release notes in the app

  • qorvyn changelog and a What's new page in the dashboard.
Qorvyn 0.5.1-alpha.0 2026-10-15
  • Dashboard: workflow graphs scale to fit their card.
Qorvyn 0.5.0-alpha.0 2026-10-15

Full dashboard

  • Live mode:
    • live activity feed and a Live indicator, including runs started from the terminal;
    • background refresh that never interrupts typing or an open dialog.
  • Visual workflow builder:
    • inputs, agent and approval steps, and tasks with one-click references to inputs and earlier outputs;
    • dependencies, retries and a live graph preview;
    • start from a template as is or customise it; YAML editor, versions, archive, delete, share.
  • New run:
    • choose who does the work: each agent's own provider, "Claude Code builds · Codex reviews", the reverse, one provider or mock;
    • or choose a provider per step, and give approvals up front.
  • Run detail:
    • graph, timeline, and duration, tokens and cost per step;
    • tabs for Changes (coloured diffs), Activity, Handoffs, Reviews and Artifacts.
  • Approvals page: with a count in the menu.
  • Runs: filter by status, agent and provider.
  • Agents & providers:
    • Verify live, and what each provider can enforce;
    • create agents from scratch or a template, edit as a form or YAML;
    • grant or revoke each capability with a switch; switch provider inline; clone, archive, delete.
  • Analytics: 7–90 days, completion rate, durations, retries, human decisions, Claude Code vs Codex, tokens and cost, failure categories.
  • Also: Notes & knowledge, code search by app, an audit log of every change, and the ⌘K palette.

Engine

  • Per-step provider overrides and run-wide acceptance of provider limits.
  • Workflow event log and local audit log (local schema 4, backed up automatically before upgrading).
Qorvyn 0.4.1-alpha.0 2026-10-15
  • Dashboard sign-in survives restarts: one token per project, 30-day cookie.
  • qorvyn dashboard --link prints the sign-in link of the running dashboard.
Qorvyn 0.4.0-alpha.0 2026-10-15
  • First dashboard (qorvyn dashboard): workflows, agents, runs, search and team, on 127.0.0.1:4317.
Qorvyn 0.3.0-alpha.0 2026-10-15

Workflows

  • Typed workflows of agent steps and human approvals.
  • Steps run in parallel.
  • Each step's output is passed to the next as data.
  • Writing steps build on each other.
  • Retries, cancel, and resume after a crash.

Team sync

  • Signed events through your team server.
  • Live updates, an offline queue and conflict detection.
  • Share agents, workflows, knowledge and opt-in workflow status.
  • Removed members and revoked devices are cut off immediately.
Qorvyn 0.2.0-alpha.0 2026-10-15
  • Agent Studio: 8 templates, versioned custom agents, effective permissions with approval on every run, and Claude Code, Codex and mock providers.
  • Safe runs: each run gets its own worktree and branch, with time limits, cancel and orphan cleanup.
  • Team identity: self-hosted server, OIDC or email-code sign-in, Ed25519 device keys, workspaces, roles, invitations and ownership transfer.
  • Go protocol package: conformance-tested against TypeScript.
  • No files in your repository: settings live in ~/.qorvyn.
  • Local foundation: qorvyn init, cited search, MCP server, SDK and private notes.