cairn
Verifiable codebase memory for AI agents — a structural graph + compass + wiki + tribal memory, all local, all traceable to source.
The precise call graph, without the guesswork · every answer re-derivable from local data · 100% local SQLite, no network calls · LLM never in the query path
cairn parses your repos with tree-sitter into a resolution-labeled structural
graph (15 languages), fuses it with code-grounded tribal memory, compass,
and wiki, and serves all of it through one MCP server (25 tools) + a cairn
CLI. The product is a verification contract: every exact edge is actually
resolved, every symbol in a synthesized doc is graph-verified by a
deterministic critic, and the LLM never sits in the query path.
Contents
- Get Started
- Language Support
- Why cairn?
- Key Features
- How It Works
- Measured Results
- CLI Reference
- MCP Tools
- Configuration
- Supported Platforms & Agents
- Documentation
- Troubleshooting
- Development
- Dependency Licenses
- Status · License
Get Started
1. Install the CLI
pip install cairn-intel
Already installed? cairn upgrade updates in place (detects uv tool /
pipx / pip; --check previews without changing anything).
2. Wire up your agent(s)
cairn install-agents
Detects which AI clients you have (Claude Code, Cursor, ZCode, Droid, Claude
Desktop, opencode, agy, kilo, omp), shows what's already wired, and prompts for scope:
workspace (per-project ./.claude/, ./.cursor/ …) or global
(~/.claude/ — every project inherits it). Non-interactive:
cairn install-agents --yes --scope global. Manual wiring is one JSON block
(stdio — or point clients that support SSE at http://127.0.0.1:9876/sse
after cairn serve start, which is what install-agents does by default):
{ "mcpServers": { "cairn": { "command": "cairn", "args": ["serve"] } } }
3. Build the graph
cairn build # parse the workspace, resolve edges (first run; ~4s on cairn itself)
4. No more syncing
cairn update # incremental reindex — only what changed since the last build
With the optional [watch] extra, a running cairn serve watches the
workspace and reindexes edits within a ~2s debounce window — no restart, no
manual update. Pending files carry a staleness banner on results until the
update lands.
Uninstall — cairn uninstall removes agent wiring, hooks, and the graph
store; --dry-run previews the scope; cairn uninstall-agents only removes
client configs.
Language Support
Fifteen languages, one uniform contract: definitions, call edges (labeled
exact / ambiguous / unresolved), references, and inheritance wherever the
grammar carries them. .h headers are sniffed to Objective-C / C++ / C.
| Language | Extensions | Status |
|---|---|---|
| Kotlin | .kt |
Full |
| Java | .java |
Full |
| Swift | .swift |
Full |
| TypeScript | .ts .tsx .mts .cts |
Full · JSX component refs tracked |
| JavaScript | .js .jsx .mjs .cjs |
Full · React <Comp/> JSX refs tracked as references edges |
| Python | .py |
Full |
| Go | .go |
Full |
| Dart | .dart |
Full |
| Objective-C | .m .mm |
Full · .h sniffed |
| PHP | .php .phtml .php3-5 |
Full (pure-PHP grammar, no HTML mixing) |
| Ruby | .rb .rbw |
Full |
| C# | .cs .csx |
Full |
| C | .c |
Full · .h sniffed |
| C++ | .cpp .cc .cxx .hpp |
Full · .h sniffed |
| Rust | .rs |
Generic tier · pinned grammar; call edges stay unresolved |
Not indexed (yet): Vue / Svelte single-file components, CSS, HTML. Details: docs/indexing.md.
Why cairn?
A code graph alone is commoditized — several tools index symbols and call edges. Generic agent memory is ungrounded — it lets an LLM silently rewrite what it "remembers." cairn is the narrow intersection: a structural graph fused with code-grounded memory, where every output is traceable to source and every synthesized doc is fact-checked before it lands.
Three promises cairn can machine-check — and does, in CI, on cairn's own code:
- Every
exactedge is actually resolved. The resolver pins each edge to one definition before labeling itexact(target_id IS NOT NULL); an invariant test guards this on every build. - Every symbol in a compass / wiki / memory doc exists in the graph. A deterministic critic fact-checks every LLM-synthesized doc against the graph before it is written; hallucinated references are rejected or flagged.
- Every answer is re-derivable from local data. cairn never calls an LLM in the query path — the LLM stays on a task queue behind the critic gate, so outputs are verifiable, not probabilistic.
Resolution labels are the evidence for promise #1. Every code graph can
tell you "who calls this." cairn tells you whether to trust the answer:
exact (pinned to one definition — trusted), ambiguous (multiple
candidates; the resolver declined to guess), unresolved (external / stdlib).
Graph tools default to precise mode — only exact edges — so blast radius is
never inflated by name collisions:
cairn impact invoke # precise (default): real callers only — ground truth
cairn impact invoke --fuzzy # candidate list (name matches), each labelled unverified
Measured on this repo: 82% of fuzzy results for common names are
name-collision noise that precise mode excludes. An empty precise
result means "no resolvable callers," not "unused" — retry with --fuzzy
before concluding a symbol is dead. And explore surfaces ambiguous
dispatch hops — polymorphism that grep fundamentally cannot see.
Honest trade-offs
- Semantic retrieval is opt-in and mid-band. On the hand-verified ground truth, pooled recall/MRR sit at 0.4174 / 0.2862 — below the 0.50 / 0.33 shipping targets, which is exactly why the semantic stack is an extra, not the default path; the structural tools carry the precision story.
- The
[semantic]extra is heavy. Real embeddings pull sentence-transformers (+ torch on Linux); a one-time ~836 MB model download lives in~/.cairn/lib/(scoped per Python version). The default install is torch-free and network-free. Alternative with no download at all: pointCAIRN_EMBED_BACKENDat a local OpenAI-compatible embeddings server (oMLX, Ollama, LM Studio) — same bge-m3 vectors, zero torch footprint (configuration.md). - Synthesized docs need an LLM pass. Compass/wiki generation runs through
the task queue (
cairn task) with the critic gate — deterministic, but it won't happen purely locally without any model access.
Key Features
- Surgical context —
explore(query)returns matching symbols' verbatim source, the call paths between them, and a blast-radius summary in one round trip. The recommended first call for agents. - Trust-labeled blast radius — precise mode follows only resolved edges;
--fuzzygives an explicitly-labelled candidate list for auditing and dead-code hunts. - Cross-repo reach —
cross_repo_deps(repo)maps who consumes your public API across registered repos;impact_analysisreports consumer reach. - Code-grounded memory — decisions / patterns / mistakes / workarounds,
symbol-keyed, recalled alongside graph results; promotion and decay
lifecycles keep it honest. Bi-temporal semantics: every memory carries a
validity interval,
--as-of <date>recall answers point-in-time queries, renamed/removed symbols auto-expire their memories (successor-linked, never deleted), andcairn memory timeline <symbol>shows the history. - Multi-agent coordination —
cairn memory sharepublishes a learning to other agents working the same store;cairn memory checkwarns before editing symbols with another agent's recent activity. Unused sharing keeps single-agent behavior byte-identical. - Security-aware blast radius — configurable taint sources/sinks
(generic defaults, workspace overrides) propagate over precise call edges;
cairn taint --from --totraces source-to-sink paths andexplore/cairn blastwarn when changes intersect one. - Closed review loop —
cairn reviewbuilds diff-scoped review packs (blast radius + memories + compass + wiki), guards pre-submit against recorded mistakes, and captures resolved review comments as new memories; the bundled advisory GitHub Action posts findings on every PR. - One-shot context packs —
cairn pack --task "<text>" --budget <tokens>emits a single token-budgeted context block (ranked sources, blast lines, compass, memories); deterministic, offline, no LLM. Measured fit-rate 1.00 at 99.7% token reduction vs a grep baseline. - Cross-repo federation —
federated_searchandcairn federated-searchmerge results across every registered workspace store with per-repo attribution;cairn ask --all-reposroutes questions across the federation; unavailable stores are named, never skipped. - Docs as first-class knowledge —
cairn knowledge ingeststages markdown / PDF / DOCX (repo doc-trees or fed files) through a reviewable dry-run manifest before anything lands in the store; classification, redaction, and collision-safe identities included. - Always fresh — incremental
cairn update(git-diff-driven), optional live watch with staleness banners, andcairn doctor's 11 health checks gating CI. - 100% local — one SQLite store under
~/.cairn; no network calls, no telemetry egress (OTLP export is opt-in and best-effort). - Agent-first surfaces — the same store backs 25 MCP tools and the CLI;
cairn install-agentswires every detected client in one command. A VS Code extension (hover blast radius, code-lens counts, compass/memory panel, zero-config local server) installs from thecairn-ext.vsixon each release. - Local dashboard —
cairn dashboardopens a loopback web console at127.0.0.1:8765: interactive graph with symbol search, recorded tool-call history and token usage (MCP + CLI, mode-labeled estimates), session chains, health/memory panels, a global workspace selector in the topbar (every view follows the selection), aCtrl/Cmd+Kcommand palette (views, workspaces, symbol search), repo-scoped wiki navigation (grouped catalog with filters and search, breadcrumbs, in-page TOCs, prev/next, graph cross-links), knowledge views over the ingested docs (/knowledgecatalog with family/status/tag filters, per-doc detail with supersede chain, relationship panel, and linked code refs, and a/knowledge/graphrelationship canvas whose legend chips filter edges in place), a collapsible grouped sidebar, a dark/light theme whose flip re-colors the live graph canvas in place (no reload; canvas physics respectsprefers-reduced-motion), CSV/JSON export of any filtered view, an Embeddings status view (probe health, fallback state, per-knob config sources) with the degradation banner, and a Settings page that persists embedding-backend configuration to~/.cairn/config.json.
How It Works
The query path is deterministic: tree-sitter parsing → SQLite graph → FTS5/BM25 fused with vectors (RRF, always on when embeddings exist) and a confidence-gated optional rerank → labeled results. The LLM only ever runs off-path, generating compass/wiki/memory candidates that the deterministic critic verifies symbol-by-symbol against the graph.
Deep dives with diagrams: architecture · indexing · retrieval · knowledge & memory.
Measured Results
Agent effort vs a grep-and-read baseline (cairn bench --suite agent;
deterministic arms, no LLM, reproducible in CI — 300-file corpus, 7 task
shapes, medians):
| metric | grep-only baseline | with cairn | reduction |
|---|---|---|---|
| tokens / query | 429,600 | 1,479 | 99.7% |
| tool calls / query | 301 | 1 | 99.7% |
| wall-clock / query | 14.9 ms | 3.7 ms | 4.0× |
Depth-3 blast radius is the extreme: 2 tool calls and 758 tokens vs 303 calls and 429,600 tokens — grep must read every name-collision hit; precise edges don't.
SWE-bench efficiency (cairn bench --suite swe-bench; deterministic
no-LLM arms over the pinned 50-task SWE-bench Lite subset,
benchmarks/datasource/swe-bench-subset.json @ revision 6ec7bb89….
Efficiency medians are their own metric class — not comparable to resolve-rate
results like RepoGraph's +32.8%):
| metric (median / task) | grep baseline | with cairn | reduction |
|---|---|---|---|
| tool calls | 19.5 | 3.0 | 84.6% |
| est. tokens | 151,007.5 | 1,555.5 | 99.0% |
Reproduce: cairn bench --suite swe-bench --smoke (first 2 pinned tasks,
fast) or cairn bench --suite swe-bench --json (full pinned subset; the
first run fetches the split, reruns run offline). Methodology, determinism
and offline contracts, and the stamped result:
docs/benchmarks.md.
Query latency (cairn bench --suite perf --repeats 10, p95):
find_definition 0.04 ms · get_callers 0.08 ms · impact_analysis
0.13 ms · search_symbols 8.15 ms · semantic_search 122.03 ms (hash
embeddings, brute-force fallback) · explore 194.14 ms.
First-semantic_search latency after boot warm-up: 15.5 s cold →
232.6 ms warm.
Self-demo — cairn indexes its own source in ~12s (~9,000 symbols /
~58,000 edges, ~272 MB peak RSS), and CI re-runs the build + resolution
invariant on every push
(tests/test_self_demo.py), so the dogfood cannot silently rot. Reproduce:
git clone https://github.com/tanlnm512/cairn && cd cairn
cairn build
cairn def build_graph # -> src/cairn/graph/builder.py
cairn impact build_graph # -> real transitive callers (non-empty)
sqlite3 "$(cairn config --db)" \
"SELECT COUNT(*) FROM edges WHERE resolution='exact' AND target_id IS NULL" # -> 0
Run the suites yourself: cairn bench --help and cairn eval --help.
CLI Reference
cairn --help (or cairn <group> --help) is authoritative. The essentials:
| Command | What it does |
|---|---|
cairn serve |
Run the stdio MCP server |
cairn dashboard |
Local web console, loopback :8765 (views + Settings) |
cairn build [--lsp] / cairn update |
Full build (--lsp optionally upgrades ambiguous Python calls with pyright) / incremental reindex |
cairn def <symbol> |
Find a symbol's definition |
cairn impact <symbol> |
Within-repo blast radius (precise default; --fuzzy to audit) |
cairn blast |
Diff-based reverse-dependency radius (--base <ref>, text/markdown/mermaid/json, precise default with --fuzzy opt-in; empty radius exits 0, unknown base reports fetch-depth guidance) |
cairn map |
Deterministic repository orientation: directory clusters, counts, hubs, hotspots, and dropped counts (--json; capped with --max-clusters / --max-hubs / --max-hotspots) |
cairn grep <pattern> |
Regex or literal search across indexed files, grouped by enclosing symbol (-i, --fixed, --in <prefix>, --max-hits; reports dropped hits/groups) |
cairn ask "<question>" |
Natural-language query routed across all layers (--all-repos routes across every registered store with per-repo attribution) |
cairn federated-search "QUERY" |
Semantic search across every registered workspace store (per-repo attribution, named dropped stores, --shared-embed opt-in) |
cairn pack --task "<text>" --budget <N> |
One-shot token-budgeted context block: ranked sources, blast lines, compass excerpt, memories |
cairn taint --from <src> --to <sink> |
Trace inter-procedural taint paths over precise call edges (--fuzzy opt-in, depth-capped) |
cairn review |
Diff-scoped review pack (--base), pre-submit memory guard (--pre-submit [--gate]), comment capture (--capture-event) |
cairn context <file> |
Compass + memory + wiki context for a file |
cairn memory / compass / wiki / task / knowledge … |
The layered stores + LLM task queue (memory: share/check multi-agent verbs, timeline <symbol>, search --as-of <date>) |
cairn install-agents / cairn uninstall |
Wire / remove agent integration |
cairn upgrade |
In-place update from PyPI (--check to preview) |
cairn eval / cairn bench |
Retrieval-quality / performance harnesses |
cairn doctor |
11 health checks (PASS/WARN/FAIL; exit code gates CI) |
cairn report |
Redacted diagnostic bundle for bug reports (never uploads) |
Deep reference: docs/cli-reference.md.
MCP Tools
25 tools across four layers — same store as the CLI:
| Layer | Tools |
|---|---|
| graph (12) | find_definition, get_callers / get_callees, impact_analysis, cross_repo_deps, semantic_search, search_symbols, repo_map, file_api, explore (the aggregator — recommended first call), federated_search (cross-store), visualize_graph |
| compass + knowledge base (5) | get_compass, search_knowledge, ask_compass (cross-layer router), trace_flow, generate_flow |
| memory (2) | tribal memory: recall_memory, record_memory (lifecycle verbs are CLI-only: `cairn memory digest |
| knowledge (6) | OKF business docs / workflows: add / search / status / delete / trace_workflow / wiki_generate |
Per-tool shapes and examples: docs/mcp-tools.md.
Configuration
Workspace cairn.json may set "include_nested_repos": true to index
initialized submodules and nested child repositories under prefixed repo ids;
the default is false. A linked worktree without a store is seeded from the
main checkout graph and then refreshed for worktree drift; the main store is
never mutated.
The default install is dependency-light and network-free. Opt in with extras:
| Extra | Adds | Key env var |
|---|---|---|
[semantic] |
sentence-transformers — real embeddings and rerank (torch-based, large) |
CAIRN_RERANK=1/=0; CAIRN_FUSION (default on) |
[ann] |
sqlite-vec — explicit ANN install (core since 0.14) |
CAIRN_ANN_BACKEND=sqlite-vec |
[scip] |
protobuf — SCIP index import/generation runtime |
cairn.json scip key |
[ingest] |
pymupdf4llm + mammoth + markdownify — PDF/DOCX conversion for cairn knowledge ingest |
cairn.json ingest key (classification rules) |
[watch] |
watchdog — live rebuilds while cairn serve runs |
CAIRN_WATCH=0 disables |
[otlp] |
OpenTelemetry export of local telemetry events | CAIRN_OTEL_ENDPOINT (unset = off) |
[bench] |
datasets — pinned SWE-bench task loading |
cairn bench --suite swe-bench |
Also: CAIRN_HOME (store location, default ~/.cairn), CAIRN_TELEMETRY=off
(master kill switch). Full reference:
docs/configuration.md.
Supported Platforms & Agents
- Platforms — anywhere Python ≥ 3.10 runs; CI tests 3.10–3.14 (macOS +
Linux;
make ci-localreplicates CI in a clean Linux container). - Agents — Claude Code, Cursor, ZCode, Droid, Claude Desktop, opencode,
agy, kilo, omp — wired by
cairn install-agents, or any MCP client via the manual JSON block above.
Documentation
Full index: docs/README.md. The short map:
| Read | For |
|---|---|
| docs/architecture.md | system shape, storage layout, module map |
| docs/indexing.md | how cairn build / update work, resolver tiers |
| docs/retrieval.md | the hybrid query pipeline and its knobs |
| docs/knowledge-and-memory.md | doc ingestion, memory tiers, task queue, critic |
| docs/mcp-tools.md · docs/cli-reference.md | the two tool surfaces |
| docs/configuration.md | cairn.json, env vars, install extras |
| docs/benchmarks.md | benchmark suites, methodology, reproducing published numbers |
Visual overviews (standalone HTML) live in docs/diagrams/: system architecture, the C4 model, indexing, retrieval, and doc-ingestion pipelines. Contribution and release procedures: docs/review-checklist.md · docs/release-checklist.md.
Troubleshooting
cairn doctor— 11 health checks with PASS/WARN/FAIL each; non-zero exit means an active degradation (agents can gate on it).cairn report— redacted diagnostic bundle for bug reports; it never uploads anything.- Empty
impact/get_callerson a symbol you know is used → it's precise mode: retry--fuzzy/fuzzy=True; the name-matches list is labelled. cairn updatedid nothing on a fresh clone → that's correct (clean tree, no diff); runcairn buildfirst.
Development
pip install -e ".[dev]" # full review gate: pytest, ruff, mypy, bandit,
# pip-audit, pre-commit, commitizen
# (compiles the vendored Kotlin grammar — needs a C toolchain)
pytest -m core # fast <3s smoke subset (one test per core function)
pytest # full suite (default gate + infra tier; CI splits them)
pytest -m infra # bench/dataset/soak tier alone (CI runs it on main pushes)
make ci-local # clean-room CI replication in a Linux container
pytest -m core includes the cairn-on-cairn self-demo: cairn indexes its
own source in an isolated temp DB and asserts the core queries return correct
results for known symbols — and that the resolution invariant holds on the
verifier's own code. Releases are cut by tagging vX.Y.Z (tag-triggered
workflow; see docs/release-checklist.md).
Contributions follow docs/review-checklist.md.
Dependency Licenses
MIT-licensed; dependencies are all permissive (MIT, BSD, Apache-2.0, MPL-2.0,
PSF) — see NOTICE. The optional [semantic] extra resolves torch
(+ NVIDIA CUDA components on Linux, under their own licenses) at install
time; the BAAI/bge-m3 embedding model (MIT) downloads on demand to
~/.cairn/lib/cp<version>/ and is not redistributed with cairn.
Status
Beta — pre-1.0 (v0.21.1). Public surfaces (CLI flags, MCP tool shapes, knowledge-file layout) may still shift before 1.0. Feedback welcome via GitHub issues.
License
MIT — © 2025–2026 Tan Le
Metadata
Release files for cairn-intel 0.21.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cairn_intel-0.21.2.tar.gz | 4.6 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| cairn_intel-0.21.2-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| cairn_intel-0.21.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cairn_intel-0.21.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| cairn_intel-0.21.2-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 14.9 MB
Release files / cairn_intel-0.21.2.tar.gz
| Download URL | cairn_intel-0.21.2.tar.gz |
|---|---|
| Size | 4.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2c675e340079458efdcc566d26b4b5aa8ef4b0d52db0123253c73f5d3e1c7f1f
|
|
BLAKE2b-256 checksum How to use checksums |
a4094350fd5cc4b2ec2804805f754720ceda9041b2e0427cb6a25fed5450c5fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / cairn_intel-0.21.2-cp310-abi3-win_amd64.whl
| Download URL | cairn_intel-0.21.2-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
2b98bfeff56a5a17e08c079130492c725be37da6709ea5baa0d4a0cf1e7da3bb
|
|
BLAKE2b-256 checksum How to use checksums |
3327fccc1eef9a895ef49f1c246d0b36a9132f6d1373875139d755b08ee69ddd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / cairn_intel-0.21.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cairn_intel-0.21.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a51818963ce9c724244e14f031a21cebf9557200837920bc4bda1712053a2af0
|
|
BLAKE2b-256 checksum How to use checksums |
9340ea59ce552e789e3ec06eada1c13e426b199beb15498d449000cd59dc7963
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / cairn_intel-0.21.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | cairn_intel-0.21.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
29ed5fcdb33855be9be1bc537644b8e45a5b98329f4669c759b58005bb0a82f3
|
|
BLAKE2b-256 checksum How to use checksums |
8914fcb18e6b9f8e4a156f9de4658fff1d03beed4817e93ef3e29a56cdccf4f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / cairn_intel-0.21.2-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | cairn_intel-0.21.2-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
76def08645cd74a045a94dedae92755a0ea76770e5f592b52bf7dff9808feeb3
|
|
BLAKE2b-256 checksum How to use checksums |
12a3f69e83aaaad233b512159b4e608d75e4b03a744e4eaaa2e5e042502bac7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency log