What changed
- chore: version 0.1.8 — the walk script checks the border on every row, the V4 agenda records the combining-mark bend
- fix: the frame pads by terminal cell, not by character — a decomposed macOS name (Übersicht, U plus a combining mark) no longer bends the right border; listed names are folded to NFC; d alone means enrich priced, and enrich off takes dry run with it
What needs no key, and what needs Claude
scan, serve, diff and share need no key and no account: they never
open a non-loopback socket, and the dashboard is compiled in, so the one
downloaded file is the whole install. serve --open-code, which lets the
dashboard show a mapped file's source, is the same kind of thing — it
changes what your own browser can be told, never what leaves the host.
Two flags reach a model, and only these two: scan --enrich, which buys
prose for the map, and serve --ask, which answers questions about it.
Both need Claude, in one of two ways: your own API key
(--provider claude — ANTHROPIC_API_KEY or an ant auth login
profile, billed per token to that account), or the Claude CLI you are
already logged into (--provider cli:claude — drawing on that
subscription's allowance; CodeAtlas never handles the credential). What a
model receives on each path is bounded and documented in
docs/SECURITY.md, and it never includes your file contents. Without a
provider you still get the complete structural map — enrichment relabels
what the scan found, it never creates it.
The -sealed binary beside each default one is the build where this
section is enforced by the compiler: built --no-default-features, it
contains neither path to a model, every no-key command above works, and
--enrich and --ask refuse with a message saying the build has no
backend. It is the binary to hand a security review.
Artifacts
codeatlas-aarch64-apple-darwin— 17564944 bytescodeatlas-aarch64-apple-darwin-sealed— 15157808 bytescodeatlas-aarch64-unknown-linux-musl— 18472216 bytescodeatlas-aarch64-unknown-linux-musl-sealed— 15717944 bytescodeatlas-checksums.txt— 1704 bytescodeatlas-v0.1.8-aarch64-apple-darwin— 17564944 bytescodeatlas-v0.1.8-aarch64-apple-darwin-sealed— 15157808 bytescodeatlas-v0.1.8-aarch64-unknown-linux-musl— 18472216 bytescodeatlas-v0.1.8-aarch64-unknown-linux-musl-sealed— 15717944 bytescodeatlas-v0.1.8-checksums.txt— 1704 bytescodeatlas-v0.1.8-x86_64-apple-darwin— 17892000 bytescodeatlas-v0.1.8-x86_64-apple-darwin-sealed— 15352904 bytescodeatlas-v0.1.8-x86_64-unknown-linux-musl— 19125936 bytescodeatlas-v0.1.8-x86_64-unknown-linux-musl-sealed— 16270376 bytescodeatlas-x86_64-apple-darwin— 17892000 bytescodeatlas-x86_64-apple-darwin-sealed— 15352904 bytescodeatlas-x86_64-unknown-linux-musl— 19125936 bytescodeatlas-x86_64-unknown-linux-musl-sealed— 16270376 bytes
Each binary appears twice on purpose: under its tag-pinned name and as a
byte-identical copy under a tag-free one (codeatlas-<target>[-sealed]),
so https://github.com/Memnoc/CodeAtlas/releases/latest/download/codeatlas-<target>
is a stable URL that always fetches the newest release. Same bytes, both
names: the checksums file lists both, the attestation covers both, and
the workflow refuses to publish a copy that differs from its tagged twin.
Verify what you downloaded
Every artifact is listed in codeatlas-v0.1.8-checksums.txt — also uploaded as its
byte-identical, tag-free copy codeatlas-checksums.txt; check the one
you took against either:
sha256sum --check --ignore-missing codeatlas-v0.1.8-checksums.txt # Linux
shasum -a 256 --check --ignore-missing codeatlas-v0.1.8-checksums.txt # macOSEvery artifact carries a GitHub build-provenance attestation tying it to
the exact workflow run and commit that built it:
gh attestation verify codeatlas-v0.1.8-<target> --repo Memnoc/CodeAtlasOn macOS: these binaries are not Apple-signed or notarized, so a
browser-downloaded copy arrives quarantined and Gatekeeper refuses its
first run. Verify it with the two commands above, then clear the mark —
xattr -d com.apple.quarantine <the file> — or allow it under System
Settings → Privacy & Security. A curl download never receives the
quarantine mark.
How this software was built
CodeAtlas is built AI-assisted, under the Northstar engineering pipeline:
every change arrives as a spec'd, ticketed slice, is built test-first, and
is cross-checked against the spec and the house standards before it lands.
The decisions are a human's, recorded as ADRs in docs/adr/. The same
disclosure runs through the artifact: prose a model wrote inside a map
always says so — the annotation store carries one record naming the
provider, the model and the UTC date of the last run that wrote it, and
prose bought by earlier runs rides beneath that latest record; the
dashboard badges enriched prose where it renders it, and share redacts
it from the exported file. The security posture — what can reach a model,
what it receives, and the committed test behind each claim — is
docs/SECURITY.md.
Transparency
CodeAtlas's AI is strictly bring-your-own: --ask and enrichment call
Anthropic's Claude with credentials you supply, and nothing else in the
tool talks to a model — the sealed build cannot even be compiled to.
Wherever AI-written prose appears it says so: the dashboard badges
enriched text where it renders it, the annotation store carries a
machine-readable record naming the provider, the model and the UTC date
of the last run that wrote it, and share removes AI prose from the
exported file entirely. Interaction with the model is always labelled as
interaction with the model. This is stated as practice, verified by the
tests docs/SECURITY.md names — not as a reading of where any law's
lines fall — so a reader never has to guess which words a model wrote.