Repository navigation
Releases
Aliquot 0.5.1: reach it from other harnesses, and the Next fix
-
Security:
next16.4.5 fixes the 11 Next.js advisories open against 16.3.3 (GHSA-vcvr-r3jv-pc5j, GHSA-2464-fhr4-w9xw and GHSA-673q-mjm6-r5xr critical; GHSA-cjq9-62q9-8jv4 and GHSA-p3m5-59mp-jv5r high; six medium or low). Overrides liftdompurify(from monaco-editor) to 3.4.17 and drizzle-kit's oldesbuildto 0.25.deepmergehas no fixed release, sovendor/deepmergeis 4.3.1 with the GHSA-gcqx-w48m-w2h4 fix and a test..github/dependabot.ymlturns on weekly grouped npm updates. -
Agent backends take a key the lab owns:
api_key_envreaches Claude Code asANTHROPIC_API_KEYand Codex asCODEX_API_KEY.auth_env, a personal subscription's OAuth token, now parses only atplacement = "public"and runs only underagent-worker --dev-shared-login; alab.tomlwithauth_envatapprovedorzdrfails to start. The README and the IRB doc no longer suggestclaude setup-token; the install guide says which model accounts Aliquot may use, and the IRB doc gains a "Model accounts" section. -
lab.example.toml's OpenRouter example routes Claude toamazon-bedrockandgoogle-vertex, the providers with zero-retention Claude endpoints;only = ["anthropic"]withzdr = truematched none. -
The roadmap puts sign-on, keys and retention (now 0.7) before studies an IRB can cite (now 0.8).
-
aliquot askasks a question through the web door from a terminal or a script.--jsonprints one line per step (started,tool,finished,refused), each with the run's record link, and the exit code says whether it was answered.--ceilingwithholds an answer above a class from a caller that keeps its own copy.pnpm lab0gains check G:aliquot ask --jsongets the same cited answer as the chat page, and a record whose chain verifies. -
aliquot acpspeaks the Agent Client Protocol on stdin and stdout, so T3 Code (as a local ACP command), Zed and other ACP clients run Aliquot agents as threads. One session is one Aliquot thread. The tools the run used appear as steps, a refusal ends the turn asrefusal, and cancelling stops the run. -
scripts/tmux.sh(pnpm up:tmux) lays out the worker, the web door, the studio and anaskshell as one tmux session. A window whose process exits keeps its last lines.docs/harnesses.mdcovers all three. -
The chat and record pages show the lab's name at the top right, from a new
[lab] nameinlab.toml(aliquot initasks for it), or the machine's hostname when it is unset. The header labels "Runs on this machine" and "Read only", the chat page's footer line and its intro paragraph are gone. -
The README demo is a new recording of the current pages, and the chat and record stills are retaken in light and dark.
-
Runs (
/runs) lists the newest 100 runs with their outcome and how many refusals each had, and shows only the runs with a refusal, or only the failed ones, at a click. Each row opens its record. A PI no longer needs a terminal to find a refused run. -
The chat thread is kept in the browser tab, so opening a record and coming back, or reloading, no longer loses it. New thread starts over. A dropped connection while an answer is pending says to reload, and the reload picks the answer up.
-
The record page has Only refusals when a run refused anything, prints cleanly for an IRB file, and arrives with its data in the page instead of a second request. Pages are gzipped: each is one request of about 6 KB, down from up to two requests and 16 KB.
-
Every control on the chat, runs and record pages shows where focus is, and asking, opening a record, downloading it and finding a refused run all work from the keyboard alone. The studio's status lines mark their kind by shape (a check, a triangle, a square, a dot), not only by colour.
Aliquot 0.5.0: install it on a lab machine
- One
docker compose upon Linux starts Postgres, the worker, the web door and a production build of the studio. The studio applies committed Payload migrations at start, and CI fails when the collections change without one. Ports are published on127.0.0.1unless.envsetsLABH_BIND.docs/install.mdis the guide for research IT. - PDF sources for knowledge bases, from the
kbcommand. poppler reads them inside the sandbox container (no network, read-only root, uid 65534), never in a Node process. A page that is only an image fails the whole file with a message naming the page, because Aliquot does no OCR.compose.sandbox.yamlgives the Docker socket to the worker only. The studio gets no socket, so PDFs compile with thekbcommand. aliquot init(pnpm aliquot:init, ordocker compose run --rm initon a machine with only Docker) writesconfig/lab.tomland.env. It tests the lab's participant id patterns against ids you paste, with a PASS or FAIL line for each, refuses a pattern that matches ordinary words, and never rewrites an existing.env.scripts/backup.shandscripts/restore.shback up and restore the database and the payload key. Restore refuses a key the backup was not made with, and ends by checking every run's hash chain.scripts/compose-check.shruns all of it on a machine with only Docker, and CI runs it on a clean Ubuntu runner: a cited answer from the lab0 handbook, a LaTeX PDF and a Word PDF read in the sandbox, a scanned page that must fail, then a backup, wipe and restore that ends with the same run verifying and decrypting again.- The web door takes
--host, so it can listen inside a container. Thekbcommand prints a source it cannot read as one line instead of a stack trace.
Aliquot 0.4.0: Word sources and a record you can keep
A lab's own Word documents, and a record a reader can keep.
- Word (.docx) sources for knowledge bases, from the
kbcommand and the studio. Core reads them to Markdown with no new dependency: headings by style name, list items, tables, tabs and line breaks; deleted tracked changes, images, comments, headers and footers are dropped. The lab's participant id patterns see the Word text. A.pdfor.docsource gets a message saying to save it as.docx. - A summary at the top of every record: outcome, time, model calls, tokens, tool calls by name, knowledge base entries retrieved and refusals. In the record page, in
aliquot recordand in--json. - Download JSON on the record page, so a PI or IRB reader can keep the record. Each event's kind is marked by shape (run, model call, tool call, refused) with a legend, and the legend names the data classes.
- Chat answers keep their structure: paragraphs, lists, headings and code blocks, still without parsing model text as HTML. Each answer says what its run read and how long it took.
pnpm run doctor: pnpm 10's built-indoctorcommand shadowed the barepnpm doctorthat 0.3.1 documented. The docs now saypnpm run doctor, and a test keeps them that way.docs/ROADMAP.md: the next releases, who each serves and how it is checked. Next is 0.5, installing it on a lab machine.
Checks on this commit: 347 tests on Linux CI (303 pass, 44 skip, 0 fail); pnpm lab0 9/9, pnpm slice1 12/12, pnpm unit3 9/9. On macOS with Docker: 347 of 347 pass, and pnpm unit2 6/6.
Aliquot 0.3.1: doctor and terminal tools
Terminal tools and a preflight on top of 0.3.0:
pnpm doctor: a read-only preflight. It checks Node, pnpm, the installed dependencies, Docker, the Postgres port, ports 3000 and 3001, thealiquot-sandboximage, the agent CLIs andlab.toml, and prints the fix for each problem. It exits 1 when somethingpnpm demoneeds is missing.pnpm aliquot runs [--limit n]lists the newest runs with their start time, agent version, outcome, event count and chain check.--jsononaliquot recordandaliquot runsprints the same view as JSON, for scripts.aliquotprints one line for setup problems instead of a stack trace, and never prints the password. Exit codes are documented in--help.pnpm aliquotno longer prints Node's ExperimentalWarning for--allow-net.- The
[tools]refusal no longer promises a version for contributed tools.
Checks on this commit: 340 tests on Linux CI (296 pass, 44 skip, 0 fail).
Aliquot 0.3.0: reading papers
Four more literature tools, all built into core, all public (D0) hosts:
europepmc_search: PubMed, PubMed Central and preprints, with which hits are open access.europepmc_fulltext: an open-access article's full text section by section, with its license.doi_lookup: Crossref's record for a DOI, plus a legal open copy from Unpaywall when the lab set a contact email.citation_walk: references or citing works of one paper, through OpenAlex.
The studio gained a read-only Tools panel, and its panels and the record page got empty, loading, error and phone layouts. Design: docs/design/DESIGN-v03.md.
Aliquot 0.2.0
- Claude Code and Codex as confined agent engines on macOS, behind a bridge to Aliquot's own tools and a host-pinned proxy.
- Built-in research tools: OpenAlex, PubMed and arXiv search, datasets by class, and
run_codefor R and Python in a container with no network. - Native Anthropic Messages and OpenAI Responses clients, and per-class model routing.
- A chat page for members, a record page for each run,
pnpm aliquot recordin a terminal, andpnpm demo, which runs the synthetic lab0 lab in one command.
Design: docs/design/DESIGN-v02.md.
Aliquot 0.1.0
The first public release: the durable run loop, data classes and the single egress decision, the boundary scanner and the runtime network seal, knowledge bases with a coverage gate, the authoring studio with five roles, the web door, the encrypted payload store and the hash-chained audit stream. Design: docs/design/DESIGN.md.