README.md

August 20, 2026 · View on GitHub

CueCrux arc-loop mark

CRUX

One binary. Your whole memory.

Crux is a local-first memory daemon for AI agents — a versioned fact store, token-budgeted BM25 + graph retrieval, and an Ed25519-signed receipt for every write. 100+ MCP tools, agent passports, portable .cruxpack export. No account. No API keys. Nothing leaves your machine.

Up and running in 60 seconds · The console · How it works · MCP tools · Platform · Docs

CI Coverage MCP Licence: Apache-2.0

Crux console Overwatch view: a gate queue of decisions that need you, a live fleet of agent sessions, and a rolling receipted activity ticker

Overwatch — the gates that need you, the live fleet, every action receipted. Ships inside the daemon at localhost:14800 — no account, no cloud dashboard.

Why Crux

  • Memory that ages honestly. Facts carry confidence, provenance and a freshness horizon (volatile ~24 h · medium ~35 d · stable ~1 y). A deterministic decay engine downranks stale claims instead of serving them as truth — reversible via memory_reverify, with scoped forget + dry-run for GDPR Art. 17.
  • Retrieval on a token budget. token_budget is a first-class parameter, not a hope. BM25 + graph fusion returns metadata and token counts first, content only inside budget — 60–80% fewer tokens than naive top-K context stuffing. Dense lanes are bring-your-own and never required.
  • Receipts, not vibes. Every mutation emits a CROWN receipt: Ed25519-signed, hash-bound, independently verifiable offline. Store integrity is checked separately with corecruxctl verify-store --strict.
  • Identity agents earn. Every agent carries a passport with a five-tier reputation ladder; verified receipts accrue as track record, and capability tokens expire instead of leaking.
  • Policy over memory. Declare organisational constraints once; proposed actions are checked against them — pass, warn, or block — before they execute.
  • Your memory follows you. Export everything as a self-certifying .cruxpack — signed, offline-verifiable, importable into any other daemon. Leaving is a command, not a ticket.
  • Know what every session cost. corecruxctl session cost and the console's token-burn page show how much context every model call re-read, where it went, and what to change.

Up and running in 60 seconds

The lowest-friction install is to just ask your agent. Paste this into any coding agent — it reviews the source, installs and runs the daemon, then Crux's setup wizard wires it into your session: the MCP surface connected, a passport minted, a first fact round-tripped.

Review and install the Crux Daemon from github.com/CueCrux/Crux — read the README and
LICENCE first, run it locally, then use its setup wizard to connect the daemon to this
session and confirm the console is up at http://localhost:14800.

Prefer to do it yourself? Bring the daemon up on any of three rails:

# Docker (recommended)
git clone https://github.com/CueCrux/Crux.git && cd Crux
docker compose up -d
From a release binary, or from source

From a release (binaries are cosign-signed with SBOMs — verify them):

curl -sSL https://github.com/CueCrux/Crux/releases/latest/download/crux-linux-amd64 -o crux
chmod +x crux
CORECRUXD_AUTH_MODE=dev_scopes CORECRUXD_DATA_DIR=./data ./crux

From source (Rust 1.88+, protobuf-compiler):

git clone https://github.com/CueCrux/Crux.git && cd Crux
cargo build --release
CORECRUXD_AUTH_MODE=dev_scopes CORECRUXD_DATA_DIR=./data ./target/release/corecruxd

CORECRUXD_AUTH_MODE is required; dev_scopes is the single-user loopback quickstart rail. Use off only for throwaway local development.

HTTP binds 127.0.0.1:14800, MCP binds 127.0.0.1:14801. Open http://127.0.0.1:14800 — the embedded console walks you through one-time setup — then get live with one command:

corecruxctl start

start is the canonical on-ramp: it detects the daemon, authenticates on the lowest-friction secure rail, wires the MCP endpoint + Claude Code hooks, round-trips a first fact, and prints a single "you're live" summary.

Using Codex or Cursor? One command each — --agent wires that client's own config too:

AgentCommandWhat it writes
Claude Codecorecruxctl start --agent claude~/.claude/settings.json (hooks + statusline)
Codex CLIcorecruxctl start --agent codex~/.codex/config.toml + the stdio bridge
Cursorcorecruxctl start --agent cursor~/.cursor/mcp.json

Every write is a merge, not an overwrite — your other MCP servers and settings survive — and re-running is safe. No bearer token is ever written into an agent config; it stays in ~/.config/cuecrux/env (0600) and is resolved at runtime. Codex gets the stdio bridge rather than the HTTP endpoint because Codex CLI fails the daemon's streamable-HTTP handshake (details).

Longer install path: docs/getting-started.md · guided rails: corecruxctl login, corecruxctl quickstart · ready-made MCP connector configs for Claude Code, Claude Desktop and Cursor: examples/mcp-configs/.

Note

Crux receipts and BLAKE3 chains prove integrity, not confidentiality. The daemon data directory is not encrypted by Crux; use filesystem encryption (LUKS, FileVault, BitLocker) when the machine, volume, or backup location is outside your trusted boundary. Per-event-class assurance (what is captured, what can bypass capture, what a receipt does and does not prove): docs/assurance-coverage-matrix.md.

The console

Every daemon ships a local operator console at localhost:14800 — watch your fleet, your plans, and your memory, every action receipted.

Crux console Canvas board: a size-adaptive tile board of sessions, plans and gates that can be dragged, panned and expanded Crux console relation graph: sessions, work items, gates, projects and passports as draggable nodes with flow-traced edges
Canvas — your whole operation as a size-adaptive board the relation graph — sessions, work, gates and passports, flow-traced
Crux console ExecPlans kanban: planned, in-progress, blocked and shipped plan cards with risk class, current milestone and progress Crux console Sessions view: saved sessions for resume and audit, each with its attached plan, passport, token usage and progress
plans as living documents — milestones, gates, risk, progress sessions that survive restarts — resume, audit, attribute token spend

Don't believe this README

Every claim about integrity is checkable on your own machine, offline, in about 60 seconds:

git clone https://github.com/CueCrux/Crux.git && cd Crux
cargo build --release --bin corecruxctl
bash scripts/demo-receipt-tamper.sh

The script seeds a CROWN receipt into a tmp data dir, runs corecruxctl verify-store --mode full --strict (expects ok: true), flips one byte on disk, re-runs verification, and asserts the failure is detected. Read the script first — it's ~150 lines of bash using only documented subcommands.

The verifier is ~1,250 lines of Rust at crates/corecrux-receipts/src/verify_v1.rs: ed25519-dalek::verify_strict (rejects malleable signatures and small-order keys), with the signature bound to both receipt ID and payload hash so it can't be transplanted. Tamper tests live in crates/corecrux-receipts/src/tests.rs.

And you can run the same exit test we run in CI — export everything the daemon knows (facts + sessions) and everything it did (signed journal + receipt refs) into one passport-signed bundle, verify that bundle offline, and watch the verifier reject a tampered byte:

corecruxctl context export --data-dir <dir> --out ./bundle   # signed=true
corecruxctl context verify ./bundle --json                   # ok=true, offline, no network

Those checks verify the bundle against the key the bundle carries, which proves it is internally consistent, not who produced it — an unpinned pass is reported as UNPINNED — trust unproven. Add --expect-pubkey-hex <64 hex> (or set CRUX_CONTEXT_VERIFY_PASSPORT_HEX) to also require the signer to be the passport you expected; a bundle re-signed by anyone else then fails.

There is no lock-in: the answer to "can you export it?" and "can you prove what it saw and did?" is a command, not a support ticket. This export → offline-verify → tamper-rejection cycle is a release-blocking CI gate, so every published build has passed its own exit test. Release artifacts are signed and attested end-to-end — cosign keyless signatures, CycloneDX SBOMs, SLSA provenance (docs/verify-release.md). Found something? Report it privately per the security policy.

3D receipt chain in the Crux console: a green receipt block linked to a chain of further receipt blocks, with an inspector showing the gate verdict and linked chain

receipts as a literal chain — click any block in the console, inspect the proof

Testing & coverage: 6,000+ tests and ~90% CI-gated region coverage, with per-crate floors on the trust core (corecrux-receipts / -segment / -storage) and the ungated total reported alongside so exclusions can't hide low-coverage code. How it's measured and exactly what's excluded: docs/testing-and-coverage.md.

Your context window is the scarce resource

Most memory layers measure recall. Crux also measures what recall costs: every retrieval call takes a hard token_budget, and the daemon trims to fit — metadata first, content only when it earns its tokens.

Benchmark spread, four panels. Tokens returned per query: naive top-K about 18,400; token budget 4000 returns 3,900; budget 2000 returns 1,940; budget 500 returns 480 — budgets enforced server-side. Same answer, a fraction of the tokens: vendor-native memory scored 97/100 using 8,428 context tokens, Crux scored 95/100 using 1,263 — 15% of the tokens for 98% of the score (ScoreCrux context benchmark, sonnet-5 arm). More context makes it worse: with 3,346 docs and 2M+ tokens, stuffed recall fell 44% to 28% on one model and 28% to 8% on another while tool-mediated retrieval held 80–100% (ScoreCrux scale benchmark). Daemon CI perf gates: 25,422 events/sec append at p95 9.98 ms, 21,328 replay reads/sec at p95 0.52 ms, BM25 median 583 ns at 100 docs and 23.1 µs at 10,000, 60–80% fewer tokens than top-K stuffing

All daemon numbers are reproducible from docs/benchmarks.md with pinned baselines, regression-gated in CI. ScoreCrux methodology, negative controls and per-model runs: scorecrux.com/context · scorecrux.com/scale. Early hosted-retrieval evals via the CoreCrux substrate score ~91% under strict scoring¹.

¹ Internal runs via the CoreCrux retrieval substrate (paid tier; see the platform section), not the bare local daemon. Strict scoring, no partial credit. Treat this as preliminary until a public evidence pack with corpus, run ID, lane flags, and commit SHA is published.

How it works

One daemon, three planes — memory, retrieval, receipts — on an append-only spine. The colours are the console's own: violet for memory, amber for retrieval, mint for receipts. No cloud in this picture; that's the point.

Crux architecture: your agent speaks MCP, HTTP or gRPC to one corecruxd binary; three planes — memory (facts, sessions, handoffs), retrieval (BM25 + graph fusion, .ccxi indexes, repo code maps) and receipts (CROWN, Ed25519, offline verify) — sit on an append-only spine of BLAKE3-chained sealed segments

More detail: docs/architecture.md.

Passports, and how the line is drawn

API keys say something with this string called us. A passport says this agent, at this trust tier, with these grants, made this call — identity and constraint, receipted as a verifiable record. What a receipt proves (and what it deliberately does not) is spelled out per event class in the assurance & coverage matrix; forgery-resistant evidence of model traffic comes from the mediated witness path, whose key the agent never holds.

  1. Bind — the session handshake binds every connection to a passport. No anonymous writes; unattributed calls are operator-tagged, never silently allowed.
  2. Carry — every tool call rides the passport. RCX mints short-lived capability tokens against it — scoped to tools, tenant and tier — so access expires instead of leaking.
  3. Earn — verified receipts accrue to the passport as reputation; five tiers climb the capability ladder and unlock more autonomy. Trust is a ledger, not a checkbox.
  4. Answer — any receipt, any time later, resolves back to the passport that produced it: who acted, at what tier, under which grants.

The same daemon binary runs on every tier. What changes is a signed RCX capability token — the policy layer that says which backends the daemon may call and what data may cross the wire. Enforcement is a property of the wire, not a crippled binary. Tokens are self-issued locally, verifiable offline with the same machinery as everything else, and refusals are fail-closed with a signed RefusalReceipt carrying a reason code — never a bare 403 or a silent downgrade.

What you get

CapabilityLocal daemonBring your ownHosted / managed
Append-only event store with BLAKE3 integrityyes
CROWN receipts and offline receipt verificationyes
Versioned fact store with freshness decay + memory_reverifyyes
Scoped forget with dry-run (GDPR Art. 17)yes
Sessions, checkpoints and cross-session handoffsyes
ExecPlans + live work boardyes
Decision records + constraint governanceyes
.cruxpack export + offline importyes
Built-in MCP server, 100+ token-filtered toolsyes
Agent passports (five-tier reputation) + RCX capability tokensyes
Live multi-session coordination boardyes
Typed action traces (reasoning refs — never raw CoT)yes·flag
C2PA output attestationyes·flag
HTTP, gRPC, health, readiness, and metricsyes
corecruxctl verification and replay toolingyes
BM25 text search with .ccxi companion indexesyes
AST code maps: register a repo, get a typed code-structure graph (Rust · TS · Python · Vue)yes
Dense fact retrieval via embeddingsOllama, vLLM, TEI, llama.cpp, LiteLLM
Hosted team sync, multi-device passports, billingyes
GPU/CUDA fused retrieval + AMR routingyes
LLM entity/relation extraction + better-dense rerankyes
Fleet governance: attribution, policy gates, revocationyes

yes·flag = ships in this repo behind a default-off feature flag — your traces and attestations are opt-in, like everything else. /v1/version reports which features are active.

Standalone by design, platform by choice

Crux is complete on its own. When you want more, it's the memory spine of the CueCrux platform — same receipts, same passports, every hop attributable.

Crux runs inside a dashed boundary labelled your machine. CruxEngine (sync off by default), CoreCrux, ScoreCrux and your planning repo connect from one side; WikiCrux (live code maps served by this daemon) and the RCX environment from the other — every call rides a passport

Free forever — the full local daemon: receipts, retrieval, passports, console. Pro (£19/user·mo) adds hosted sync, multi-device passports, and better-dense rerank. Governance (£49/user·mo) adds fleet-wide attribution, policy gates, and revocation that propagates with proof. Metered credits (~£0.01/Cr) buy the heavy lifts — dense rerank, extraction, attestations. The local dense lane is never metered: credits buy the step-up, not your own machine. Every credit spend mints a signed receipt (crux.credit_spend_receipt.v1) — even the meter is auditable. The local daemon is the acquisition, not the upsell. Full ladder: memorycrux.com/pricing.

You cannot pay us to hold your data — there is no such product. Paid frontier ingest and extraction is processed in flight, never parked: enrichment lands back in your store — process, return, delete. Every hop carries a receipt. Local-first isn't a pricing tier; it's the architecture. The promises are written down in the Trust Contract.

The lane stack (each lane is a different way of remembering):

LaneWhat it remembersTier
lexicalexact words, BM25-class — microseconds on CPUfree · local
densesemantic similarity — meaning, not spellingBYOE / managed
graph / topologyentity links walked at query timeCoreCrux
entity & traitwho/what-keyed recall — ask about a person, get their dossierCoreCrux
eventtime-anchored recall — what happened, when, in what orderCoreCrux
navigationalsummary-tree descent for corpora too large to scanCoreCrux
verbatim pointersexact-quote recall without duplicating contentfree · local
+ several morethe ones we don't blog about

AMR — Adaptive Manifest Routing reads the lane manifest and routes each query automatically — fusing the lanes that earn their tokens, skipping the ones that don't, learning from per-request outcomes. No knobs. It switches on with a subscription and stays off otherwise. Without one you still run the full local daemon — lexical lane, graph fusion, token budgets, receipts. That's not a demo; it's the same engine the paid lanes plug into.

EU AI Act

The Act asks for risk management, logging, transparency and human oversight. Most stacks will answer with PDFs. Crux answers with receipts — the compliance machinery is the same machinery everything else runs on.

ArticleThe Act asks forCrux gives you
Art. 9 — risk managementdocumented risk processesrisk classes on plans/work items; high-risk transitions demand a passport-attributed human gate, and the gate becomes a signed fact
Art. 10 — data governancePII disciplineprivate facts never leave the machine; reserved prefixes are private at ingest; observation capture redacts; reasoning stored as references, never raw chain-of-thought
Art. 12 — record-keepingautomatic loggingevery state mutation emits a signed CROWN receipt + timeline row; hash-chained, so gaps are detectable, not deniable
Art. 13 — transparencyattributable outputsagent passports attribute every mutation; AI-authored commits and PRs carry agent attribution
Art. 14 — human oversightmeaningful gatesdestructive actions need explicit, current consent; gated transitions can't auto-approve past a timeout
Art. 15 — accuracy & robustnessforesight + integrityconsequence enrichment before high-risk operations; published benchmark packs carry corpus + commit; tamper-evident store
Art. 50 — output transparency"an AI made this"C2PA Content Credentials via output_attest — a verifiable claim, not a footer
GDPR Art. 17 — erasureright to be forgottenmemory_forget with dry-run: see what would be deleted, then delete it auditably

These are engineering controls aligned with the Act — not a legal opinion, and conformity assessment for your deployment remains your responsibility. What Crux gives you is the evidence layer: when the auditor asks, you answer with receipts, not screenshots.

Engrams — memory that compiles

Retrieval answers questions. Engrams skip them. When the same lesson keeps getting re-learned from raw history, it's distilled into a named, versioned procedure that arrives before the agent acts — instinct, not search. Engrams carry provenance hashes back to the source chunks they were learned from (you can always audit why the instinct exists), resolve by declared intent at session start, and are gated by passport tier. Local-first: a built-in catalog plus fact-backed overlays serve the same contract with zero cloud dependency.

100+ MCP tools, memory-first

Built MCP-first, not MCP-wrapped: every retrieval tool takes a token budget, every mutation emits a receipt, identity rides a passport. The server lives at http://localhost:14801/mcp.

Tip

AI agents exploring this codebase: start at AGENTS.md — a crate atlas, a claims-to-code-to-tests matrix, and the cryptographic invariants, all anchored by greppable symbol names and verified in CI.

Capability areaRepresentative tools
Memory & retrievalstore_fact · query_facts · query · query_scan · query_expand · fact_history · memory_view · get_bootstrap
Freshness & consolidationmemory_freshness · memory_contradictions · memory_consolidate · memory_reverify · memory_pin
Portability & erasurememory_forget · memory_forget_dry_run · output_attest · receipt_verify
Identity & passportsissue_passport · get_passport · revoke_passport · passport_link_device · resolve_principal
Handoff, sync & coordinationcreate_handoff · accept_handoff · sync_status · coord_status · coord_announce
Sessions & artefactssave_session · get_session · session_checkpoint · list_sessions · artefact_put · artefact_get
Decisions & constraintsrecord_decision · declare_constraint · get_constraints · check_constraints
Observabilitylist_observations · get_observation · verify_observation · session_token_usage

…and more across substrate entities & edges, work & coordination, and orchestration — 100+ tools today, and counting. The catalogue is token-filtered: a local token sees local tools; hosted-authorised tokens also see hosted-gated tools (descriptions are marked [local] / [hosted]).

Recommended first calls: cuecrux_sessionget_bootstrap(topic="patterns")store_fact(...)query_facts(...). Full guidance: docs/agent-guide.md · API surface: docs/developer-portal.md.

Operations reference

Requirements & configuration
PathRequirements
DockerDocker or Docker Desktop.
Build from sourceRust 1.88+, protobuf-compiler, and a C toolchain.
Shell examplescurl; jq recommended.
EmbeddingsOptional local or remote embedding endpoint.

Config via environment variables or YAML (config.example.env, config.example.yaml$XDG_CONFIG_HOME/crux/config.yaml). Core settings:

VariableDefaultDescription
CORECRUXD_AUTH_MODErequiredoff, dev_scopes, jwt_hs256, or jwt_jwks.
CORECRUXD_ROUTE_AUTHderivedenforce when auth is enabled or the listener is non-loopback; otherwise shadow. Shipped packaging pins enforce.
CORECRUXD_DATA_DIR../CoreCruxData/v1Data directory.
CORECRUXD_HTTP_PORT14800HTTP API port.
CORECRUXD_GRPC_PORT4007gRPC API port.
CORECRUXD_MCP_PORT14801MCP server port.
CORECRUXD_MCP_ENABLEDtrueEnable the built-in MCP server.
CORECRUXD_BUILD_CCXI0Build .ccxi indexes at seal time.
CORECRUXD_CREDIT_METERfalseEnable the default-off comped-wallet credit meter and /v1/credits/spend test rail.
CORECRUXD_EMBEDDING_URLunsetEnables dense fact retrieval.
CORECRUXD_EMBEDDING_MODELnomic-embed-textEmbedding model name.
CORECRUXD_CORECRUX_BASE_URLunsetCoreCrux admin base URL for /console lane-weight controls.
CORECRUXD_CORECRUX_ADMIN_TOKENunsetOptional bearer token forwarded to CoreCrux admin endpoints.
CORECRUXD_CORECRUX_PASSPORT_IDunsetOptional passport id forwarded to CoreCrux admin endpoints.

Security defaults: loopback binds are safe for local development; non-loopback HTTP binds require a real auth mode; non-loopback MCP binds should set CRUX_AGENT_TOKEN(S); set CRUX_MCP_HANDOFF_SECRET if handoff packages must survive restarts. The daemon refuses to start unless CORECRUXD_AUTH_MODE is explicit (off | dev_scopes | jwt_hs256 | jwt_jwks).

Usage receipts (adoption signal) are opt-in and off by default — the daemon sends no outbound signal unless you set an https:// collector endpoint and record consent. See docs/usage-receipts.md (CORECRUXD_USAGE_RECEIPTS_SUBMIT / _ENDPOINT / _CONSENT_AT).

Credit Meter is also opt-in and off by default. CORECRUXD_CREDIT_METER=1 enables only the seeded comped-wallet spend rail for pinned quotes and signed spend receipts; fiat minting, Paddle, and production billing remain separately gated. The same flag meters successful RCX-verified /v1/gpu1/rerank compute: callers carry the pinned quote in options.credit_quote, and the result adds the spend receipt id, credits spent, and post-spend wallet balance.

First five minutes (HTTP API)

Store a fact (Docker default is dev_scopes, hence the scope header):

curl -s -X PUT http://localhost:14800/v1/facts \
  -H "Content-Type: application/json" \
  -H "X-Corecrux-Scopes: facts:write,facts:read,admin:read" \
  -d '{"entity":"project","key":"status","value":"Crux Daemon is running locally","confidence":0.95}' | jq .

Query facts (note the mandatory-by-convention token budget):

curl -s "http://localhost:14800/v1/facts?query=Crux+Daemon&token_budget=500" \
  -H "X-Corecrux-Scopes: facts:read,admin:read" | jq .

Verify store integrity:

docker exec crux-crux-1 corecruxctl verify-store --data-dir /data --scope recent
docker exec crux-crux-1 corecruxctl verify-store --data-dir /data --scope all --mode full --strict

Common endpoints:

MethodPathPurpose
GET/healthz / /readyz / /metricshealth, readiness, Prometheus
GET/v1/versionbuild, features, sync, update state
PUT / GET/v1/factsstore / query facts
POST/v1/admin/appendappend events
POST/v1/query/text-searchBM25 retrieval
GET/v1/receipts/{id} / …/verificationfetch / verify a receipt

Full route notes: docs/api-reference.md.

Embeddings (bring your own)

Crux ships no embedding model. Point it at an endpoint you control:

CORECRUXD_EMBEDDING_URL=http://localhost:11434
CORECRUXD_EMBEDDING_MODEL=nomic-embed-text

Supported patterns: Ollama, vLLM, TEI, llama.cpp, LiteLLM. When unset, fact queries use keyword matching and confidence ranking only.

CLI, backups, upgrades, troubleshooting

corecruxctl subcommands: verify-store (integrity), replay (drift classification), receipts (inspect/export), ccxi (companion indexes), projections (projection state).

Before upgrading: stop cleanly → snapshot CORECRUXD_DATA_DIRcorecruxctl verify-store --scope recent plus corecruxctl verify-store --scope all --mode full --strict when the window allows → keep the previous binary until the new one passes /readyz. Rollback = restore the snapshot, restart the previous binary. Never delete live shard data by hand.

SymptomCheck
Daemon exits at startupSet CORECRUXD_AUTH_MODE.
HTTP works but MCP doesn'tCORECRUXD_MCP_ENABLED, port 14801.
Non-loopback bind refusedUse jwt_hs256 / jwt_jwks, or stay loopback.
Text search emptyEnable .ccxi build; ensure sealed/indexed data exists.
Embeddings inactiveSet CORECRUXD_EMBEDDING_URL + model.
Store verification failsStop daemon, snapshot data, inspect with corecruxctl.

More: docs/troubleshooting.md · docs/ops-guide.md · docs/release-packaging.md

Naming & repository scope
NameMeaning
CruxProduct and repository name.
Crux DaemonThe local daemon distribution documented here.
corecruxdCanonical daemon binary built by Cargo.
cruxUser-facing release alias for corecruxd.
corecruxctlCLI for verification, replay, receipts, and operations.
crux-hookAgent lifecycle hooks, including encrypted compaction snapshot sync.
CORECRUXD_*Environment-variable prefix for daemon config.

This repo contains the local-first daemon, CLI, MCP server, append-only storage, BM25 retrieval, CROWN receipt verification, capability-token signing/verification, the outbox-push sync client, and the Claude Code lifecycle hooks. Every claim about local trust can be verified by reading this tree.

This repo does not contain the hosted backend (operated by CueCrux Ltd) or GPU/CUDA acceleration (a separate distribution; this repo is CPU-only). Self-hosting without the hosted backend keeps the daemon fully functional in local-only mode (crux-router returns DegradedLocal for hosted-tier decisions). This boundary is intentional — audit the local half here, the hosted half via the published Trust Contract and the receipts your daemon emits.

Community

Built in the open, verified in the open. If Crux is useful to you, a star helps others find it.

Contributing · Security policy · Code of conduct · Changelog · Trust Contract

  • Before running a release artifact, verify its signature, SBOM and provenance with docs/verify-release.md.
  • Report vulnerabilities privately through SECURITY.md; do not open a public issue for security bugs.
  • For non-security bugs or feature requests, use the GitHub issue templates: bug report or feature request.

Licence

Crux Daemon is open source under the Apache License, Version 2.0.

  • Commercial use, modification, distribution, and private use are permitted.
  • Running Crux as a managed, hosted, or cloud service is permitted.
  • Apache-2.0 includes an express patent grant (section 3).
  • Redistribution must retain the copyright, licence, and NOTICE attribution (sections 4(a)–4(d)); it grants no trademark rights (section 6).
  • Curated content is covered separately by content/LICENCE-CONTENT.md.
  • Plain-English answers: docs/LICENCE-FAQ.md.

Copyright (c) 2026 CueCrux Ltd.