Repository layout
The README says what AI-LinkMO is for. This is the tree behind it. Three toolchains live here: Python and uv at the root, Node in lib/frontend/, and a second uv project in .lokf/. CONTRIBUTING.md has the development setup and the checklist to run before a pull request.
ai the CLI entry point (runs the linkmo project's command line through uv, asking the API by default)justfile build steps: the API contract and the UI entity list, which are committed; the graph, the store, the browse database and the schema's pages, which are notscripts/ the scripts behind those recipes, and the test runnerai-risk-ontology-linkmo/ the linkmo project, a uv workspace member: the exposure file, the CLI and API kernels, the server, the browse build and the schema's pages docs/elements/ the schema's pages, one example on each class page, written by `just gen-doc`, not committedlib/api/ ai-linkmo's handlers behind the API: the related-risk lookups, the hand-written operations and the library instances they sharelib/frontend/ Svelte 5 web UI (Vite; proxies to the API on :8000)lib/store/ the DuckDB store behind the listings and the search, built by `just load-store`, not committedlib/test/ pytest suite; its API-mode CLI cases are the documented CLI examples, checkedgraph/ the exported ontology and crosswalk CSVs; cypher/ receives the fetched Neo4j export, not committedbyo/data/ nine governance frameworks encoded for the AI Risk Ontologybyo/notes/EXAMPLES.md a scripted walk through all four access patternsdocs/ openapi.json the API contract, written by `just gen-openapi` and checked against the server key-concepts.md the vocabulary the four doors share working-with-the-data.md bring your own data, crosswalks, search and dumps, browsing, the schema's pages, the graph export neo4j.md load the graph into Neo4j in a container cli-examples.md every entity type, one command away install-notes.md compilers, CUDA, corporate package indexes llm-inferencing.md LLM inference and ARES, on infrastructure you run for-the-curious.md what this adds over AI Atlas Nexus, what it leaves out, where it could go status.md status and caveats, the full list releasing.md how this repository releases threat-model.md why the application and the automation are held as SECURITY.md says repository-layout.md this page.assets/ screenshots of each door, the architecture diagram, and the logos.lokf/ the sidecar: this repository's own knowledge bundle (knowledge/) and its tooling; its README has the layoutknowledge_bundle -> .lokf/knowledge, the bundle under a visible name, for folder pickers and Obsidian.github/workflows/ tests, lint, the knowledge-bundle gates, releasesThe test suite runs 101 CLI cases in API mode and in local mode, and starts the API server for you. CI runs uv run pytest lib/test -m "not slow", which takes about two minutes. ./scripts/tests.sh has the narrower modes. The browse tests need the browse extra and skip without it, so CI installs it beside test. The web UI (npm run check, npm run lint, npm test in lib/frontend/) and the bundle (cd .lokf && just lokf-validate) have their own gates. lib/test/README.md has the detail. The slow and byod_required markers are defined in pyproject.toml under [tool.pytest.ini_options]; pytest-timeout is installed, but no default timeout is set.