halofyai/halofy
Halofy is the open access and governance layer for AI agents across your organization. Identity, policy, provenance, audit, and signed erasure.
Halofy is the open access and governance layer for AI agents across your organization. Identity, policy, provenance, audit, and signed erasure.
As AI spreads across an organization, every agent needs access to shared context without becoming its own identity system, policy engine, or audit silo. Halofy sits between organizational knowledge and the agents that use it. It resolves identity, enforces access, governs change, records every outcome, and makes erasure independently verifiable.
Underneath that governance boundary, Halofy maintains durable context and keeps retrieval replaceable. The result is infrastructure you can inspect, self-host, run offline, and connect to any agent over MCP or HTTP.
| Organization-wide access | Governed context | Open infrastructure |
|---|---|---|
| Agents, applications, and operators use the same server-resolved identity, namespace ACL, roles, and policy boundary over MCP or HTTP. | Every change follows one auditable path with provenance, supersedence, append-only history, and signed erasure. | Postgres remains the authority while retrieval engines plug in through an ACL-scoped, read-only driver interface. |
mem_write, mem_read, mem_search,
mem_assemble, mem_fault, mem_stats, mem_forget, policy, sharing,
pinning, export, and manifest operations.StubLlm,
HashEmbedder, and zero network access.git clone https://github.com/halofyai/halofy.git
cd halofy/kernel
npm ci
npm run demo
No API key. No database server. No model download. No network call. The demo boots the real kernel on embedded PGlite, then exercises pinning, assembly, writes, hybrid search, an L3 context fault, audit, import, fragmentation, and signed erasure.
== T0 ·· boot in-memory, pin the refund policy, assemble the working set
booted: embedder=hash(dim=256) llm=stub
== T3 ·· mem_fault - page missing context in from L3
fault: hit=true source=L3 injected=2
== T7 ·· mem.forget - erase the customer and mint a signed certificate
certificate 01... verifyCertificate === true
after forget: mem_search surfaces 0 matching facts
demo complete - kernel closed.
Then prove the kernel and its retrieval boundary:
npm test
npx tsx src/cli.ts conformance baseline
The current standalone verification passes 2,678 tests across 205 files and all 6/6 driver-conformance checks. Timings and generated identifiers vary by machine; the behavior does not.
cd kernel
npm run serve
Open http://localhost:8787/console/login.
For a durable self-hosted deployment with Postgres, generated keys, and Docker
Compose, follow the self-hosting guide.
cd kernel
npx tsx src/cli.ts keygen org/support/agent-1 user:dana owner
HALOMEM_API_KEY=hm_... npm run mcp
The API key resolves the namespace, actor, and role server-side. MCP tool schemas do not accept caller-asserted identity fields.
ScopedView and
can return references only. It cannot write or reach audit/storage modules.Read the architecture guide for the syscall pipeline, ACL examples, SQL, tiering, brownout behavior, and a per-directory source map.
The core namespace rule is deliberately small: a caller in namespace N sees
rows belonging to N or an exact /-split ancestor of N. Siblings and
descendants remain invisible unless an explicit, audited administration path
allows a subtree operation.
caller: org/support/agent-1
org visible ancestor
org/support visible ancestor
org/support/agent-1 visible self
org/support/agent-2 hidden sibling
org/support/agent-1/scratch hidden descendant
org/sales hidden sibling
The query layer enforces this rule with exact ancestor matching. Retrieval drivers do not reimplement it; they receive an already-scoped view. See the threat model for the known partial controls and adversarial cases, and the architecture guide for the worked ACL queries.
The standalone build is not a trial:
| Property | Standalone behavior |
|---|---|
| Licence/activation | No licence key, edition flag, activation, or entitlement check |
| Packaging quota | None; the public QuotaPort defaults to UNMETERED |
| Capacity controls | Operator-owned policy rate limits and model-budget brownout only |
| Telemetry | None; no usage beacon or Halofy phone-home |
| Models | Offline deterministic defaults; optional direct Anthropic, OpenAI-compatible, OpenAI embedding, and Azure OpenAI configuration |
| Database | Embedded PGlite by default; regular Postgres/pgvector for durable deployments |
| Export | Open schema, export, manifest, and erasure paths |
The permanent boundary is documented in OPEN-SOURCE-SCOPE.md. The practical feature matrix is in open build vs. managed service.
Halofy's managed operations, not the access and governance boundary, fund the open kernel:
None of those components is required to run this repository. The connector framework, baseline model plumbing, governed context lifecycle, access control, console, self-host stack, and test suite are present and runnable.
| Guide | Use it when you want to… |
|---|---|
| Getting started | Go from clone to first key, write, search, MCP connection, and real model configuration |
| Architecture | Trace requests, understand custody, or change the kernel |
| Driver kit | Build and validate a retrieval cartridge |
| Self-hosting | Run Postgres, Docker Compose, backups, restores, and upgrades |
| Threat model | Review assets, boundaries, adversaries, and known partial controls |
| Open-source scope | See what stays open and how that promise changes |
| Kernel reference | Find scripts, source directories, environment variables, and development commands |
The full index is in docs/README.md.
Start with CONTRIBUTING.md. Security-sensitive changes to authentication, tenancy, ACLs, migrations, encryption, audit, erasure, or the write/retrieval boundary require adversarial review and regression coverage.
Security reports belong in the private channels described by SECURITY.md, not in public issues. Community expectations are in CODE_OF_CONDUCT.md.
The kernel and console are AGPL-3.0-or-later. Named client and extension
subtrees are Apache-2.0 so they can be embedded without relicensing the
host application. These include kernel/src/driver/, kernel/src/mcp/, and
kernel/integrations/. See LICENSING.md and NOTICE
for the authoritative file-by-file boundary.
The Halofy name is a trademark; neither software licence grants trademark rights. See TRADEMARK.md.