diff --git a/README.md b/README.md
index f1addeb..e826ed3 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,8 @@ Scale regression: Qarinah also passed **380 / 380 file-specific exact and typo-t
Website ·
+ Features ·
+ Install ·
Documentation ·
White paper ·
Research benchmark ·
@@ -139,7 +141,7 @@ npx qarinah query "release provenance" \
--format markdown
```
-Start with the [five-minute guide](docs/GETTING-STARTED.md), then use the [cross-agent handoff guide](docs/CROSS-AGENT-HANDOFFS.md), [dashboard guide](docs/DASHBOARD.md), [team-memory guide](docs/TEAM-MEMORY.md), [CLI reference](docs/CLI-REFERENCE.md), [JavaScript API reference](docs/API-REFERENCE.md), [MCP guide](docs/MCP-GUIDE.md), [task recipes](docs/RECIPES.md), or [troubleshooting guide](docs/TROUBLESHOOTING.md).
+Start with the [feature map](docs/FEATURES.md) and [five-minute installation guide](docs/GETTING-STARTED.md), then use the [cross-agent handoff guide](docs/CROSS-AGENT-HANDOFFS.md), [dashboard guide](docs/DASHBOARD.md), [team-memory guide](docs/TEAM-MEMORY.md), [CLI reference](docs/CLI-REFERENCE.md), [JavaScript API reference](docs/API-REFERENCE.md), [MCP guide](docs/MCP-GUIDE.md), [task recipes](docs/RECIPES.md), or [troubleshooting guide](docs/TROUBLESHOOTING.md).
Your project already contains the decisions and evidence behind its changes. Qarinah lets the next agent query that record and receive a bounded, cited pack selected for the current task. The same local memory can support Codex, Claude Code, CLI workflows, and compatible MCP clients instead of locking project context to one editor.
diff --git a/docs/FEATURES.md b/docs/FEATURES.md
new file mode 100644
index 0000000..a1c55e1
--- /dev/null
+++ b/docs/FEATURES.md
@@ -0,0 +1,45 @@
+# Qarinah features
+
+Qarinah is evidence-linked project memory for coding agents. It keeps an inspectable record beside a software project and compiles bounded, cited context packs for Codex, Claude Code, Cursor, CLI workflows, and compatible MCP clients.
+
+## Project-owned memory
+
+- A canonical, append-only JSONL event record stored with the project.
+- Stable event identities, content hashes, and chain verification for detectable edits, deletions, truncation, duplicates, and broken continuity.
+- Explicit workspace initialization, machine-local trust, and metadata-only capture by default.
+- Configurable content capture, redaction, retention, size, repository, time, and disclosure boundaries.
+
+## Cited context compilation
+
+- Bounded lexical, typo-tolerant, graph, and optional semantic retrieval.
+- Complete selected records with event IDs, hashes, retrieval manifests, and evidence-coverage diagnostics.
+- Token and character budgets with reserved output space and explicit abstention controls.
+- Temporal validity, freshness, supersession, conflict, repository, and authority filtering before context is admitted.
+- Deterministic Markdown and JSON context packs that can be inspected before they reach a model.
+
+## Project structure and derived views
+
+- Bounded project scanning with typed file, directory, import, link, and unresolved-reference relationships.
+- A rebuildable typed graph and retrieval index derived from the authoritative event record.
+- An optional SQLite WAL and FTS5 read model that remains disposable derived state.
+- A local read-only dashboard for current and superseded decisions, conflicts, citations, permitted activity, affected files, and caller-supplied context measurements.
+
+## Coding-agent integrations
+
+- Reviewed Codex and Claude Code integrations that use the same explicitly trusted project record.
+- Cursor setup, terminal workflows, and project-level instructions.
+- A native MCP stdio server with diagnostic-only defaults and explicitly authorized, zero-write context retrieval.
+- Cross-agent handoff capsules for continuing a task without replaying the complete retained history.
+
+## Team memory and portability
+
+- Multi-repository context packs that preserve separate repository and authority boundaries.
+- Freshness diagnostics, encrypted sync bundles, signed checkpoints, and explicit membership records.
+- Deterministic Markdown, JSON, typed graph, and Google Open Knowledge Format exports.
+- Schemas and adapters for Cockroach Crawler evidence, Cockroach Browser memory records, ProductLoop runtime events, and optional Maqam authority scopes.
+
+## Verify the boundary
+
+Qarinah is not an autonomous agent runtime, a hosted personalization service, or a guarantee that a model answer is correct. It supplies inspectable project memory to a caller that remains responsible for model choice, current source files, tools, and execution authority.
+
+Continue with [installation and setup](GETTING-STARTED.md), [host integrations](HOST-INTEGRATIONS.md), the [CLI reference](CLI-REFERENCE.md), or the [JavaScript and TypeScript API](API-REFERENCE.md).
diff --git a/package.json b/package.json
index 90c7f4a..2d28f2f 100644
--- a/package.json
+++ b/package.json
@@ -50,6 +50,7 @@
"schemas/",
"docs/ARCHITECTURE.md",
"docs/GETTING-STARTED.md",
+ "docs/FEATURES.md",
"docs/CROSS-AGENT-HANDOFFS.md",
"docs/CROSS-SESSION-CONTINUATION-BENCHMARK.md",
"docs/CROSS-AGENT-VIDEO-PROTOCOL.md",
diff --git a/scripts/build-site.mjs b/scripts/build-site.mjs
index b2ecd6a..20ce31f 100644
--- a/scripts/build-site.mjs
+++ b/scripts/build-site.mjs
@@ -23,6 +23,19 @@ const packageJson = JSON.parse(await readFile(path.join(root, "package.json"), "
const productVersion = packageJson.version;
const productPositioning = "Evidence-linked project memory for coding agents.";
const productExplanation = "Qarinah keeps one compact, cited project memory beside your code, so Codex, Claude Code, Cursor, and compatible tools can continue from verified context instead of starting from zero.";
+const qarinahFeatures = [
+ "Verified handoffs between coding agents",
+ "Local append-only project memory",
+ "Evidence-linked cited context packs",
+ "Typed project and provenance graph",
+ "Budgeted hybrid retrieval",
+ "Codex and Claude Code integrations",
+ "Consent-gated MCP context retrieval",
+ "Multi-repository memory with separate authority",
+ "Freshness checks and a visual memory dashboard",
+ "Encrypted team bundles and signed checkpoints",
+ "Deterministic Markdown, JSON, graph, and OKF exports"
+];
const answerEngineQuestions = [
{
name: "What is Qarinah?",
@@ -313,6 +326,14 @@ const docPages = [
section: "Start",
aliases: ["install qarinah", "project setup", "first query", "coding agent memory quickstart"]
},
+ {
+ route: "docs/features",
+ source: "docs/FEATURES.md",
+ title: "Features",
+ description: "Explore Qarinah project memory, cited context compilation, agent integrations, local dashboards, team memory, exports, and operating boundaries.",
+ section: "Start",
+ aliases: ["qarinah features", "project memory features", "coding agent memory capabilities", "context compiler capabilities"]
+ },
{
route: "docs/cli",
source: "docs/CLI-REFERENCE.md",
@@ -615,7 +636,9 @@ function rewritePublicationLink(markdown, source) {
function nav(active = "") {
const items = [
- ["Product", "/", "home"],
+ ["Overview", "/", "home"],
+ ["Features", "/docs/features/", "features"],
+ ["Install", "/docs/getting-started/", "install"],
["Docs", "/docs/", "docs"],
["Answers", "/docs/faq/", "answers"],
["Compare", "/alternatives/", "alternatives"],
@@ -652,7 +675,8 @@ function footer() {