[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "kindex" version = "0.43.2" description = "Every agent is smart inside its own silo. Kindex lets them work together: a local-first knowledge graph and MCP server shared by Claude Code, Codex, Gemini CLI, Antigravity, OpenCode, and Cursor." readme = "README.md" requires-python = ">=3.10" license = "MIT" authors = [{ name = "Wander" }] keywords = ["knowledge-graph", "ai", "context", "claude"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Topic :: Software Development :: Libraries", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", ] dependencies = [ "pydantic>=2.0", "pyyaml>=6.0", "networkx>=3.0", "numpy>=1.24", "python-dateutil>=2.8", ] [project.optional-dependencies] kinbase = ["rfc8785>=0.1.4", "cryptography>=41"] llm = ["anthropic>=0.40"] vectors = ["sqlite-vec>=0.1"] mcp = ["mcp[cli]>=1.26.0,<2.0"] reminders = ["dateparser>=1.1", "cronsim>=2.0"] transmogrifier = ["transmogrifier>=0.2.0"] # LLM-free deterministic extraction (coreference -> predicate routing -> # zero-shot relation extraction). DELIBERATELY NOT IN `all`: this pulls torch # and spaCy models, taking an install from tens of MB to ~2.5 GB. Kindex's # premise is that it stays nimble, so this is opt-in, its output is quarantined # in capture_candidates, and it must beat the keyword baseline on # `kin extract eval` before anyone turns it on. talon = ["glirel>=1.0", "spacy>=3.7", "torch>=2.0"] # tree-sitter and its rust grammar are here so the rust adapter tests run in CI # instead of skipping; pytest-timeout turns a hung test into a failure. dev = ["rfc8785>=0.1.4", "cryptography>=41", "pytest>=7.0", "pytest-xdist>=3.6", "pytest-timeout>=2.3", "scipy>=1.10", "dateparser>=1.1", "build>=1.0", "tree-sitter>=0.23", "tree-sitter-rust>=0.23"] all = ["rfc8785>=0.1.4", "cryptography>=41", "anthropic>=0.40", "sqlite-vec>=0.1", "mcp[cli]>=1.26.0,<2.0", "dateparser>=1.1", "cronsim>=2.0"] [project.urls] Homepage = "https://kindex.tools/" Documentation = "https://kindex.tools/" Repository = "https://github.com/wandercom/kindex" Issues = "https://github.com/wandercom/kindex/issues" [project.scripts] kin = "kindex.cli:main" kin-mcp = "kindex.mcp_server:main" [project.entry-points."kindex.adapters"] github = "kindex.adapters.github:adapter" linear = "kindex.adapters.linear:adapter" files = "kindex.adapters.files:adapter" commits = "kindex.adapters.git_hooks:adapter" projects = "kindex.adapters.projects:adapter" sessions = "kindex.adapters.sessions:adapter" codex-sessions = "kindex.adapters.codex_sessions:adapter" code = "kindex.adapters.code:adapter" [tool.hatch.build.targets.wheel] packages = ["src/kindex"] [tool.hatch.build.targets.sdist] # Runtime state is private even when a build backend does not honor Git ignores. exclude = [ "/.kin/local", "/.kin/local/**", "/.kin/events", "/.kin/events/**", "/.kin/manifests", "/.kin/manifests/**", "/.kin/kinbase.toml", "/kinbase-compatibility.md", "/docs/reviews/**", ] [tool.pytest.ini_options] testpaths = ["tests"]