Quickstart¶
This guide gives you the shortest path to try Lint-AI on a local repository, notes, or an agent-memory corpus. Choose the interface that fits your use case:
- CLI for a one-off local scan or query.
- Python for scripting and notebook workflows.
- Docker for a containerized HTTP server.
- HTTP server for an application or service integration.
- MCP for an MCP-capable agent client. See the MCP interface guide.
Fastest path¶
From the repository root, these three commands build Lint-AI, index a corpus, and run a query:
cargo build --release
cargo run --release -- /path/to/repo
cargo run --release -- --query "your question" /path/to/repo
For an application integration, jump directly to the Docker, HTTP server, MCP interface, or other agent frameworks guide below.
1. Build or install¶
Run the compiled binary directly:
Or install it on your PATH:
Query semantics use the heuristic backend in this release. The rust-bert POS/NER path is experimental and not part of the audited release dependency graph.
2. Lint or index a corpus¶
Point Lint-AI at a repository or memory corpus directory:
If the repository has a docs/ folder, the tool will usually scope itself there automatically.
3. Inspect the corpus¶
Show the derived inventory:
cargo run --release -- /path/to/repo/docs --show-concepts
cargo run --release -- /path/to/repo/docs --show-headings
Show the entity and term views:
cargo run --release -- /path/to/repo --show-tier0
cargo run --release -- /path/to/repo --show-tier1-entities
cargo run --release -- /path/to/repo --show-tier1-terms --tier1-term-ranker yake
If you want spaCy-based entity extraction:
cargo run --release -- /path/to/repo --show-tier1-entities \
--tier1-ner-provider spacy --spacy-model en_core_web_sm
4. Query the corpus¶
Ask a simple memory retrieval question:
Ask for LLM-ready retrieval context:
Run with Docker¶
The repository includes a Compose configuration. Set a token, then build and start the server from the repository root:
The service uses a named Docker volume for the persistent index. Verify that it is ready:
To stop it:
The image runs the release HTTP server on 0.0.0.0:8080 and stores its file-backed index under /data/index. For a one-off container without Compose, see the HTTP server guide.
6. Run the HTTP server¶
Use the standalone server when another application will add and search memories over HTTP:
Check that it is ready:
See the HTTP server guide for the request contract, authentication, lifecycle operations, and performance measurements.
7. Connect an agent with MCP¶
MCP is for agent clients that support the Model Context Protocol. Install and configure the provider-specific adapter, then restart the client so it loads Lint-AI's MCP server and hooks. Start with the agent integrations guide or the MCP interface guide. HTTP and MCP are optional; the CLI and Rust library work without an agent client.
8. Use it from Python¶
The Python extension exposes an in-memory IndexStore with upsert, query, remove, and inspection methods. Build it locally with maturin:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install maturin
maturin develop --release
Then use it from Python:
import lint_ai
store = lint_ai.IndexStore()
store.upsert("doc-1", "Docker install guide for Ubuntu hosts")
print(store.query("docker ubuntu", 5))
The binding is enabled by the Rust python feature and does not require an agent client or the HTTP server.
9. Use it as a Rust library¶
If you are integrating Lint-AI into a Rust app, start with IndexStore and SourceDocument.
use lint_ai::{IndexStore, PipelineOptions, SourceDocument};
fn main() -> anyhow::Result<()> {
let mut index = IndexStore::in_memory(PipelineOptions::default());
index.upsert(SourceDocument {
doc_id: "artifact-1".to_string(),
source: "artifact://artifact-1".to_string(),
content: "docker install guide for linux hosts".to_string(),
concept: "docker install".to_string(),
group_id: None,
headings: vec!["Overview".to_string()],
links: vec![],
timestamp: None,
doc_length: 36,
author_agent: None,
});
let results = index.query("docker install", 5)?;
println!("{}", serde_json::to_string_pretty(&results)?);
Ok(())
}
For corpus-local persistence under .lint-ai/, use:
use std::path::Path;
use lint_ai::{IndexStore, PipelineOptions};
let index = IndexStore::for_corpus(Path::new("/path/to/corpus"), PipelineOptions::default())?;
If you already have DocRecord values, use lint_ai::index::MemoryIndex for the built search structure.