{"id":48555725,"url":"https://github.com/intentweave/intentweave","last_synced_at":"2026-04-11T17:01:19.934Z","repository":{"id":346836938,"uuid":"1175358342","full_name":"intentweave/intentweave","owner":"intentweave","description":"Semantic knowledge extraction for code and docs — CARI local index + LLM knowledge graph","archived":false,"fork":false,"pushed_at":"2026-04-08T09:01:58.000Z","size":2317,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T11:04:16.170Z","etag":null,"topics":["ast","cari","code-analysis","copilot","developer-tools","knowledge-graph","mcp","neo4j","sqlite","typescript"],"latest_commit_sha":null,"homepage":"https://intentweave.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intentweave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"}},"created_at":"2026-03-07T15:51:23.000Z","updated_at":"2026-04-08T10:15:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"d2047df9-30d6-4b2c-9f61-fc45c292bbe5","html_url":"https://github.com/intentweave/intentweave","commit_stats":null,"previous_names":["intentweave/intentweave"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/intentweave/intentweave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentweave%2Fintentweave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentweave%2Fintentweave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentweave%2Fintentweave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentweave%2Fintentweave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intentweave","download_url":"https://codeload.github.com/intentweave/intentweave/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentweave%2Fintentweave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31551900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ast","cari","code-analysis","copilot","developer-tools","knowledge-graph","mcp","neo4j","sqlite","typescript"],"created_at":"2026-04-08T11:00:24.270Z","updated_at":"2026-04-11T17:01:19.904Z","avatar_url":"https://github.com/intentweave.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IntentWeave\n\n**Semantic knowledge extraction platform** — build queryable knowledge graphs from documents and code,\nwith a zero-cost code-aware retrieval index for everyday use.\n\nIntentWeave provides two complementary systems:\n\n1. **CARI (Code-Aware Retrieval Index)** — Builds a lightweight SQLite index from your code's AST,\n   document keywords, and git history. No LLM calls, no external services, no cost. Produces ranked\n   file retrieval, cross-layer connection discovery, CI drift detection, and **interactive architecture\n   visualization** with automatically inferred layers, communities, and dependency analysis.\n\n2. **Knowledge Graph (KG)** — Uses LLMs to extract entities, decisions, and relationships from\n   natural-language documents. Persists to Neo4j for rich semantic queries, impact analysis, and\n   documentation health checks.\n\nBoth are available through CLI, MCP tools (GitHub Copilot), REST API, and a React UI.\n\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)\n\n---\n\n## Quick Start\n\n### CARI — Zero-Cost Index (no LLM, no Neo4j)\n\n```bash\nnpm install -g @intentweave/cli\ncd /path/to/your/project\n\niw init\niw index build                         # \u003c 3 seconds for most projects\niw index retrieve \"authentication\"     # ranked file retrieval\niw index connections \"AuthService\"     # cross-layer connection discovery\niw index check --changed src/auth.ts   # CI drift detection\niw index report                        # coverage, staleness, hidden couplings\n```\n\n### Architecture Analysis \u0026 Visualization\n\n```bash\n# Auto-infer architectural layers from your import graph\niw index layers-infer\n\n# Validate imports against inferred layer boundaries\niw index layers-check\n\n# Generate a standalone interactive HTML architecture report\niw index export --html\n\n# With LLM-generated layer and directory names (optional)\niw index export --html --provider openai --model gpt-4o-mini\n```\n\nThe HTML report renders a **layered, spatial architecture view**:\n\n- Files positioned in their inferred architectural tier (foundation at bottom, entry points at top)\n- Node size proportional to transitive dependents — bigger = higher impact\n- Colour-coded community clusters via label-propagation detection, with **three switchable modes**:\n  structural (imports + co-changes), semantic (full co-occurrence), temporal (git co-changes only)\n- Import edges with layer violations drawn as red reverse-arrows\n- Three views: **Layers** (tiered layout), **Communities** (force-directed), **Dependencies** (root-focused)\n- Vertical slice detection — click a community to highlight its cross-layer feature slice\n- Hierarchical sub-layering within architectural tiers\n- Optional LLM pass names layers (\"HTTP Layer\", \"Data Access\") and directories (\"CLI Subcommands\",\n  \"Pipeline Stages\") with architectural descriptions\n- Zero server dependency — shareable as a single self-contained HTML file\n\n#### Layers View — Auto-Inferred Architectural Tiers\n\n![Layers View](docs/screenshots/layers-view.png)\n\nFiles arranged into automatically inferred layers with LLM-generated names and descriptions.\nNode size reflects transitive dependents; colours indicate community clusters.\n\n#### Communities View — Force-Directed Graph\n\n![Communities View](docs/screenshots/communities-view.png)\n\nForce-directed layout revealing community clusters, doc-code links, and import relationships.\n\n#### Dependencies View — Root-Focused Dependency Tree\n\n![Dependencies View](docs/screenshots/dependencies-view.png)\n\nExplore the full dependency tree from any root file, colour-coded by risk level.\n\nTwo depth modes:\n\n- `--depth structured` (default) — headings, bold text, code spans only. Fast and precise.\n- `--depth full` — adds body text scanning with IDF noise filtering. +72% more annotations.\n\n### Knowledge Graph — LLM Semantic Extraction\n\n### Install from npm\n\n```bash\nnpm install -g @intentweave/cli\niw --help\n```\n\nOr use `npx` without installing:\n\n```bash\nnpx @intentweave/cli run docs/*.md --track open -i -v\n```\n\n### First project setup\n\n```bash\ncd /path/to/your/project\n\n# Initialize workspace\niw init\n\n# Start Neo4j (requires Docker)\ndocker run -d --name neo4j \\\n  -p 7474:7474 -p 7687:7687 \\\n  -e NEO4J_AUTH=neo4j/intentweave \\\n  neo4j:5\n\n# Run the extraction pipeline on your docs\nexport NEO4J_PASSWORD=intentweave\nexport OPENAI_API_KEY=sk-...\niw run docs/*.md --track open --provider openai -i --persist -v\n\n# Query the knowledge graph\niw query \"What are the main components?\"\n```\n\n\u003e **Full CLI documentation:** [docs/CLI-USAGE.md](docs/CLI-USAGE.md)\n\n### From source (development)\n\n```bash\ngit clone https://github.com/intentweave/intentweave.git\ncd intentweave\npnpm install \u0026\u0026 pnpm build\n\n# Use the dev wrapper (no build needed for changes)\n./iw.sh run docs/*.md --track open -i -v\n```\n\n### Start the Server\n\n```bash\ncd apps/server\ncp .env.example .env    # edit NEO4J_PASSWORD and OPENAI_API_KEY\n\npnpm dev\n# → 🧠 IntentWeave server listening on http://0.0.0.0:3000\n# → 📖 API docs:   http://localhost:3000/docs\n# → ❤️  Health:     http://localhost:3000/health\n```\n\n---\n\n## REST API\n\nAll endpoints live under `/api/`. The server runs on port 3000 by default.\n\n### Query the Knowledge Graph\n\n**Natural language** (requires `OPENAI_API_KEY`):\n\n```bash\ncurl -X POST http://localhost:3000/api/query \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-session-id: my-project' \\\n  -d '{\"question\": \"What decisions were made about the database?\"}'\n```\n\n```json\n{\n  \"results\": [\n    {\n      \"decision\": \"Neo4j\",\n      \"type\": \"decision\",\n      \"predicate\": \"DECIDED_FOR\",\n      \"target\": \"graph database\"\n    }\n  ],\n  \"cypher\": \"MATCH (a:Canon)-[r:CANON_REL {predicate: \\\"DECIDED_FOR\\\"}]-\u003e(b:Canon) WHERE ...\",\n  \"summary\": \"- **Neo4j** was decided for as the graph database\\n- ...\",\n  \"count\": 3\n}\n```\n\n**Raw Cypher** (no LLM needed):\n\n```bash\ncurl -X POST http://localhost:3000/api/query \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"cypher\": \"MATCH (n:Canon:Entity) RETURN n.name, n.type LIMIT 10\"}'\n```\n\n### Build RAG Context\n\n**Topic-based** (requires `OPENAI_API_KEY`):\n\n```bash\ncurl -X POST http://localhost:3000/api/context \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-session-id: my-project' \\\n  -d '{\"topic\": \"authentication architecture\"}'\n```\n\n**Entity-seeded** (no LLM needed):\n\n```bash\ncurl -X POST http://localhost:3000/api/context \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-session-id: my-project' \\\n  -d '{\"entity\": \"React\", \"hops\": 3}'\n```\n\n**Dump all** entities:\n\n```bash\ncurl -X POST http://localhost:3000/api/context \\\n  -H 'x-session-id: my-project' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"all\": true}'\n```\n\n### List Entities\n\n```bash\n# All entities in a session\ncurl 'http://localhost:3000/api/entities?session=my-project'\n\n# Filter by type\ncurl 'http://localhost:3000/api/entities?session=my-project\u0026type=decision\u0026limit=20'\n\n# Search by name\ncurl 'http://localhost:3000/api/entities?session=my-project\u0026search=auth'\n```\n\n### Run Extraction Pipeline\n\n```bash\ncurl -X POST http://localhost:3000/api/run \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"files\": [\"docs/*.md\"],\n    \"track\": \"open\",\n    \"provider\": \"openai\",\n    \"incremental\": true,\n    \"persist\": true,\n    \"verbose\": true\n  }'\n```\n\nReturns 202 with a run summary including `runId`, artifact count, entity/relationship totals, and duration.\n\n### Persist to Neo4j\n\n```bash\n# Persist latest run\ncurl -X POST http://localhost:3000/api/persist \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"latest\": true}'\n\n# Persist specific run\ncurl -X POST http://localhost:3000/api/persist \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"runId\": \"run-2026-03-08-abc12345\"}'\n```\n\n### Impact Analysis\n\n```bash\ncurl -X POST http://localhost:3000/api/impact \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-session-id: my-project' \\\n  -d '{\"files\": [\"src/auth.ts\"], \"hops\": 2}'\n```\n\n### Documentation Health\n\n```bash\ncurl -X POST http://localhost:3000/api/doc-health \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-session-id: my-project' \\\n  -d '{\"files\": [\"docs/ARCHITECTURE.md\"]}'\n```\n\n### Graph Schema\n\n```bash\ncurl http://localhost:3000/api/schema\n```\n\nReturns canonical predicates, entity types, and relationship documentation.\n\n---\n\n## CLI\n\n```bash\n# Run extraction pipeline\niw run docs/*.md --track open --provider openai -i -v\n\n# Query the knowledge graph (natural language)\niw query \"What are the main components?\"\n\n# Query with raw Cypher\niw query --cypher \"MATCH (n:Canon:Entity) RETURN n.name, n.type LIMIT 20\"\n\n# Build RAG context\niw context \"authentication architecture\" -s my-project\n\n# Entity-seeded context\niw context -e \"React\" --hops 3 -s my-project\n\n# Impact analysis\niw impact src/auth.ts -s my-project\n\n# Documentation health check (CARI default — no Neo4j needed)\niw doc-health\niw doc-health --neo4j -s my-project   # full KG mode\n\n# Cross-layer code linking\niw xlink . --session my-project --persist\n\n# Persist to Neo4j\niw persist --latest -v\n\n# --- CARI (no LLM, no Neo4j) ---\n\n# Build the lightweight index\niw index build\niw index build --depth full    # include body text with IDF filtering\n\n# Query the index\niw index retrieve \"authentication\"         # ranked file retrieval\niw index connections \"AuthService\"         # cross-layer connections + gaps\niw index check --changed src/auth.ts       # CI drift detection\niw index report                            # corpus-wide health dashboard\n\n# Incremental update (only changed files)\niw index update\n```\n\nAdditional CARI queries are available as CLI subcommands, MCP tools, and via the programmatic API:\n\n| CLI Command                                | MCP Tool                   | What It Does                                                   |\n| ------------------------------------------ | -------------------------- | -------------------------------------------------------------- |\n| `iw index clones`                          | `cari_clones`              | Exact code clone detection (identical body hash)               |\n| `iw index structural-clones`               | `cari_structural_clones`   | Type 2 clones (same control flow, different identifiers)       |\n| `iw index circular-imports`                | `cari_circular_imports`    | Detect import cycles (A → B → C → A)                           |\n| `iw index unused-exports`                  | `cari_unused_exports`      | Exported symbols never imported anywhere                       |\n| `iw index hotspot-priority`                | `cari_hotspot_priority`    | High-churn + low-doc files ranked by documentation urgency     |\n| `iw index todos`                           | `cari_todos`               | TODO/FIXME/HACK/XXX inventory with file, line, and kind        |\n| `iw index module-coverage`                 | `cari_module_coverage`     | Documentation coverage % per directory                         |\n| `iw index orphaned-sections`               | `cari_orphaned_sections`   | Doc sections where all mentions are unresolved                 |\n| `iw index doc-completeness`                | `cari_doc_completeness`    | Per-doc score: covered vs. total exports from referenced files |\n| `iw index cross-group-drift`               | `cari_cross_group_drift`   | Entity coverage conflicts between doc groups                   |\n| `iw index mentions-of \u003cid\u003e`                | `cari_mentions_of`         | Find doc mentions of a code or external entity                 |\n| `iw index annotations-for \u003cfile\u003e`          | `cari_annotations_for`     | List all annotations for a documentation file                  |\n| `iw index test-coverage`                   | `cari_test_coverage`       | Map test files to source files, find untested exports          |\n| `iw index hubs`                            | `cari_hubs`                | God-node / hub analysis (degree centrality)                    |\n| `iw index communities`                     | `cari_communities`         | Community detection (structural / semantic / temporal modes)    |\n| `iw index surprises`                       | `cari_surprises`           | Surprising connection ranking (composite score)                |\n| `iw index rationale`                       | `cari_rationale`           | WHY/NOTE/IMPORTANT/DESIGN rationale inventory                  |\n| `iw index terminology`                     | `cari_terminology`         | Terminology inconsistency detection                            |\n| `iw index dep-depth`                       | `cari_dep_depth`           | Transitive import depth + fan-in/fan-out risk                  |\n| `iw index boundary-violations`             | `cari_boundary_violations` | Cross-package internal import detection                        |\n| `iw index layers-infer`                    | `cari_layers_infer`        | Auto-infer architectural layers from import graph              |\n| `iw index layers-check`                    | `cari_layers_check`        | Validate imports against layer configuration                   |\n| `iw index export --html`                   | —                          | Generate standalone interactive architecture report            |\n| `iw index export --html --provider openai` | `cari_layers_name`         | LLM-generated layer \u0026 directory names for the report           |\n\n\u003e See [docs/CLI-USAGE.md](docs/CLI-USAGE.md) for the full command reference, workflows, and troubleshooting.\n\n### MCP (GitHub Copilot Integration)\n\nIntentWeave exposes MCP tools for use in VS Code Copilot:\n\n| Tool            | Purpose                          | Key Parameters                  |\n| --------------- | -------------------------------- | ------------------------------- |\n| `kg_query`      | Natural language or Cypher query | `question`, `cypher?`, `limit?` |\n| `kg_context`    | Build RAG context from graph     | `topic?`, `entity?`, `hops?`    |\n| `kg_entities`   | List/search entities             | `type?`, `search?`, `limit?`    |\n| `kg_impact`     | Semantic impact analysis         | `files`, `hops?`                |\n| `kg_doc_health` | Documentation freshness          | `files?`                        |\n| `kg_schema`     | Graph schema description         | _(none)_                        |\n\n**CARI tools** (no Neo4j or LLM needed):\n\n| Tool                       | Purpose                                     | Key Parameters                   |\n| -------------------------- | ------------------------------------------- | -------------------------------- |\n| `cari_retrieve`            | Ranked file retrieval by topic or symbol    | `query`, `scope?`, `limit?`      |\n| `cari_connections`         | Cross-layer connection discovery + gaps     | `entity`, `include?`, `limit?`   |\n| `cari_check`               | CI drift detection for changed files        | `changed`, `severity?`           |\n| `cari_clones`              | Exact code clone detection                  | _(none)_                         |\n| `cari_structural_clones`   | Type 2 clone detection                      | _(none)_                         |\n| `cari_circular_imports`    | Import cycle detection                      | _(none)_                         |\n| `cari_unused_exports`      | Unused exported symbols                     | `limit?`                         |\n| `cari_hotspot_priority`    | High-churn low-doc file ranking             | `limit?`                         |\n| `cari_todos`               | TODO/FIXME/HACK/XXX inventory               | `kind?`, `limit?`                |\n| `cari_module_coverage`     | Documentation coverage % per directory      | _(none)_                         |\n| `cari_orphaned_sections`   | Doc sections with all-ungrounded mentions   | _(none)_                         |\n| `cari_doc_completeness`    | Per-doc completeness vs. referenced exports | _(none)_                         |\n| `cari_cross_group_drift`   | Cross-group entity coverage conflicts       | _(none)_                         |\n| `cari_mentions_of`         | Entity → doc mentions                       | `entityId`, `minConfidence?`     |\n| `cari_annotations_for`     | File → all annotations                      | `filePath`, `minConfidence?`     |\n| `cari_test_coverage`       | Test→source mapping + gaps                  | `limit?`                         |\n| `cari_hubs`                | God-node / hub analysis                     | `limit?`                         |\n| `cari_communities`         | Community detection (3 modes)               | `mode?`, `resolution?`, `limit?` |\n| `cari_surprises`           | Surprising connection ranking               | `limit?`                         |\n| `cari_rationale`           | WHY/NOTE/IMPORTANT/DESIGN inventory         | `kind?`, `limit?`                |\n| `cari_terminology`         | Terminology inconsistency detection         | `limit?`                         |\n| `cari_dep_depth`           | Transitive import depth analysis            | `limit?`                         |\n| `cari_boundary_violations` | Package boundary violation detection        | _(none)_                         |\n| `cari_layers_infer`        | Auto-infer architectural layers             | _(none)_                         |\n| `cari_layers_check`        | Validate imports against layer config       | `allowSkipLayer?`                |\n| `cari_layers_name`         | LLM-generated layer \u0026 directory names       | `provider`, `model?`, `api_key?` |\n\nStart the MCP server:\n\n```bash\niw mcp --session my-project -v\n```\n\nVS Code auto-discovers via `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"intentweave-kg\": {\n      \"command\": \"npx\",\n      \"args\": [\"@intentweave/cli\", \"mcp\", \"--session\", \"my-project\", \"-v\"]\n    }\n  }\n}\n```\n\n---\n\n## Architecture\n\n```\napps/\n  server/               → Runnable server (composes core + open)\n\npackages/\n  core/                 → @intentweave/core — types, predicates, interfaces\n  analyzer/             → @intentweave/analyzer — pipeline engine (IN→FX→KX→GX)\n  index/                → @intentweave/index — CARI SQLite index (annotator, IDF, queries)\n  cli/                  → @intentweave/cli — `iw` commands + MCP server\n  server-core/          → @intentweave/server-core — Fastify + Neo4j + middleware\n  server-open/          → @intentweave/server-open — open track API routes\n  profiles/             → @intentweave/profiles — extraction profile packs\n  ast-extractor/        → @intentweave/ast-extractor — tree-sitter TS/JS extraction\n  swift-parser/         → @intentweave/swift-parser — tree-sitter Swift extraction\n  python-parser/        → @intentweave/python-parser — tree-sitter Python extraction\n```\n\n### Server Plugin Architecture\n\nThe server is built on a layered plugin model:\n\n```\n┌──────────────────────────────────────────┐\n│          @intentweave/server-core         │\n│  Fastify 5 + Neo4j pool + context MW     │\n│  Health + SSE + OpenAPI (Swagger)        │\n└──────────┬───────────────────────────────┘\n           │\n┌──────────▼───────────────────────────────┐\n│         @intentweave/server-open          │\n│  POST /api/query   — KG query (NL+Cypher)│\n│  POST /api/context — RAG context          │\n│  POST /api/run     — pipeline execution   │\n│  POST /api/persist — Neo4j persistence    │\n│  POST /api/impact  — impact analysis      │\n│  POST /api/doc-health — doc freshness     │\n│  GET  /api/entities — entity listing      │\n│  GET  /api/schema  — graph schema         │\n│  POST /api/xlink   — code linking         │\n└──────────────────────────────────────────┘\n```\n\n---\n\n## Pipeline\n\n### Open Track (IN → FX → KX → GX)\n\nSchema-free knowledge extraction:\n\n1. **IN** — Chunk documents (semantic markdown splitting, ~16k chars/chunk)\n2. **FX** — Free extraction (LLM extracts raw triples per chunk, parallel)\n3. **KX** — Canonicalization (normalize entities + predicates, batch of 40)\n4. **GX** — Global merge (cross-document entity deduplication)\n\n### Features\n\n- **Incremental caching** — SHA-256 content-addressed, skip unchanged files\n- **Fast keyword scanning** — parallel file I/O (64 concurrent reads), combined regex pre-filter, single-pass `indexOf` matching, early termination. Scans 3500+ files in seconds, not minutes\n- **Batch failure detection** — 3 consecutive failures = abort\n- **Network resilience** — two-phase retry, batch cooldown\n- **Token/cost estimation** — before committing to LLM calls\n- **Delta persistence** — only write changes to Neo4j\n- **Profile packs** — domain-specific extraction rules\n\n---\n\n## Configuration\n\n### Environment Variables\n\n| Variable            | Default                 | Description                           |\n| ------------------- | ----------------------- | ------------------------------------- |\n| `NEO4J_URI`         | `bolt://localhost:7687` | Neo4j bolt URI                        |\n| `NEO4J_USERNAME`    | `neo4j`                 | Neo4j username                        |\n| `NEO4J_PASSWORD`    | _(required)_            | Neo4j password                        |\n| `NEO4J_DATABASE`    | `neo4j`                 | Neo4j database name                   |\n| `IW_SESSION`        | `default`               | Default session ID                    |\n| `IW_WORKSPACE_ROOT` | _(optional)_            | Workspace root (enables run/persist)  |\n| `OPENAI_API_KEY`    | _(optional)_            | OpenAI key (enables NL query + topic) |\n| `IW_LLM_MODEL`      | `gpt-4o-mini`           | LLM model for NL queries              |\n| `PORT`              | `3000`                  | Server port                           |\n| `HOST`              | `0.0.0.0`               | Server host                           |\n| `LOG_LEVEL`         | `info`                  | Log level                             |\n| `CORS_ORIGIN`       | `*`                     | CORS origin(s), comma-separated       |\n\n---\n\n## Development\n\n```bash\npnpm install          # Install all packages\npnpm build            # Build all (uses Turbo)\npnpm test             # Run all tests (1200+ tests)\npnpm dev              # Dev mode with hot reload\npnpm typecheck        # Type check all packages\npnpm format           # Format with Prettier\npnpm format:check     # Verify formatting\n```\n\n### Publishing\n\nAll `@intentweave/*` packages are publishable to npm:\n\n```bash\n# Build everything first\npnpm build\n\n# Publish all packages (pnpm resolves workspace:* → real versions)\npnpm -r publish --access public\n\n# Or publish individual packages\npnpm --filter @intentweave/cli publish --access public\n```\n\n### Project Stats\n\n- **11 packages** + 1 app\n- **1200+ tests**, all passing\n- **TypeScript 5.6**, ESM, strict mode\n- **Fastify 5**, Neo4j 5, SQLite (better-sqlite3), Turbo, pnpm workspaces\n- **27 CARI query modes** + interactive HTML architecture report with multi-view community modes\n- **33 MCP tools** for GitHub Copilot integration\n\n---\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). All contributions require signing the [CLA](CLA.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintentweave%2Fintentweave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintentweave%2Fintentweave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintentweave%2Fintentweave/lists"}