Your AI tools are only as good as the context they have.
Every RAG app, research pipeline, and LLM workflow hits the same wall: stale documents, redundant content, and no way to know what's useful and what's dead weight. Vector databases solve retrieval but not lifecycle. Manual curation doesn't scale. Web search has no memory.
Conflux is a local knowledge store that manages itself. Documents go in with metadata and expiration dates. Automated feeds keep pulling fresh data. Semantic search surfaces what matters. And the lifecycle engine quietly archives what's stale, expires what's old, and cleans up what's forgotten — so your context stays fresh without you gardening it.
Single binary. Runs offline. No cloud. No API keys for core features. Your data stays on your disk.
# Build
cargo build --release
# Initialize a store
conflux store init ~/.conflux
# Ingest a document
conflux ingest report.pdf --type data --tags "quarterly,finance" --collection "q1-2026"
# Query
conflux query "revenue growth drivers" --collection "q1-2026" --limit 10
# Check store health
conflux report health
# Search entities
conflux entity search "Goldman Sachs"
# Set up an automated feed
cat > ~/.conflux/feeds/market-data.toml << 'EOF'
name = "market-data"
enabled = true
schedule = "*/6h"
[source]
type = "command"
command = "curl -s https://api.example.com/data"
[ingest]
collection = "market"
document_type = "data"
tags = ["market", "daily"]
expires_after_days = 30
EOF
conflux (workspace)
├── conflux-core # Library — all business logic
├── conflux-cli # CLI binary (clap)
└── conflux-mcp # MCP server (JSON-RPC over stdio)
Storage is a plain directory:
~/.conflux/
├── config.toml # Store configuration
├── store.db # SQLite (WAL mode) — metadata, entities, usage, feedback
├── content/ # Extracted text (one file per document UUID)
├── archive/ # Archived documents
├── vectors/index.bin # CONFLUXV binary vector index
├── feeds/ # Feed TOML configs
├── ner/ # Cached NER model
└── logs/ # Feed execution logs
Portable, inspectable, backupable. You can query store.db with sqlite3 and read documents with a text editor.
score = 0.70 * semantic + 0.15 * recency + 0.10 * usage + 0.05 * feedback
| Signal | What it measures | How it works |
|---|---|---|
| Semantic | Relevance to query | Cosine similarity (All-MiniLM-L6-v2) |
| Recency | Freshness | Exponential decay, 30-day half-life |
| Usage | How often it's been queried | Sigmoid curve on use count |
| Feedback | Explicit relevance ratings | Useful / not-relevant ratio |
Documents that get queried more rank higher. Documents marked "useful" rank higher. Stale documents fade. The store learns what matters.
[dependencies]
conflux-core = { path = "conflux-core" }
use conflux_core::{Store, QueryOptions, IngestSource, IngestOptions, FeedbackRating, FeedbackOptions};
let mut store = Store::open(Path::new("~/.conflux"))?;
// Query
let results = store.query("market conditions Q1", QueryOptions::with_limit(10))?;
for r in &results {
let content = store.read_content(r.document.id)?;
println!("{}: {:.3}", r.document.title, r.score);
}
// Entity-based retrieval
let docs = store.documents_by_entity("Federal Reserve", 20)?;
// Record feedback
store.record_feedback(doc_id, FeedbackRating::Useful, FeedbackOptions::default())?;
See docs/FLOWFLUX_INTEGRATION.md for a complete API guide written for downstream tool integration.
| Type | Default Expiration | Intended Use |
|---|---|---|
| News | 7 days | Breaking news, daily updates |
| Data | 30 days | Reports, statistics, market data |
| Position | 90 days | Analysis, opinion, predictions |
| Reference | Never | Foundational material, historical data |
Lifecycle runs automatically on store open. Expired documents are archived. Documents unused for 180 days are flagged stale. Archives older than 30 days are purged. All configurable in config.toml.
# Run the MCP server for AI assistant integration
conflux-mcp --store ~/.conflux
Exposes tools over JSON-RPC 2.0 on stdio: query, ingest, get_document, list_documents, search_entities, store_health, record_feedback, set_examination_status, set_evidence_quality, add_citation, get_citations.
v0.2.0 — Evidence tracking and citation chains:
add_citation, get_cited_documents, get_citing_documents)cited → retrieved → examined → challenged)set_examination_status, set_evidence_quality, add_citation, get_citationsv0.1.0 — Core functionality:
MIT
5 commits
Rust
100.0%
Your AI tools are only as good as the context they have.
Every RAG app, research pipeline, and LLM workflow hits the same wall: stale documents, redundant content, and no way to know what's useful and what's dead weight. Vector databases solve retrieval but not lifecycle. Manual curation doesn't scale. Web search has no memory.
Conflux is a local knowledge store that manages itself. Documents go in with metadata and expiration dates. Automated feeds keep pulling fresh data. Semantic search surfaces what matters. And the lifecycle engine quietly archives what's stale, expires what's old, and cleans up what's forgotten — so your context stays fresh without you gardening it.
Single binary. Runs offline. No cloud. No API keys for core features. Your data stays on your disk.
# Build
cargo build --release
# Initialize a store
conflux store init ~/.conflux
# Ingest a document
conflux ingest report.pdf --type data --tags "quarterly,finance" --collection "q1-2026"
# Query
conflux query "revenue growth drivers" --collection "q1-2026" --limit 10
# Check store health
conflux report health
# Search entities
conflux entity search "Goldman Sachs"
# Set up an automated feed
cat > ~/.conflux/feeds/market-data.toml << 'EOF'
name = "market-data"
enabled = true
schedule = "*/6h"
[source]
type = "command"
command = "curl -s https://api.example.com/data"
[ingest]
collection = "market"
document_type = "data"
tags = ["market", "daily"]
expires_after_days = 30
EOF
conflux (workspace)
├── conflux-core # Library — all business logic
├── conflux-cli # CLI binary (clap)
└── conflux-mcp # MCP server (JSON-RPC over stdio)
Storage is a plain directory:
~/.conflux/
├── config.toml # Store configuration
├── store.db # SQLite (WAL mode) — metadata, entities, usage, feedback
├── content/ # Extracted text (one file per document UUID)
├── archive/ # Archived documents
├── vectors/index.bin # CONFLUXV binary vector index
├── feeds/ # Feed TOML configs
├── ner/ # Cached NER model
└── logs/ # Feed execution logs
Portable, inspectable, backupable. You can query store.db with sqlite3 and read documents with a text editor.
score = 0.70 * semantic + 0.15 * recency + 0.10 * usage + 0.05 * feedback
| Signal | What it measures | How it works |
|---|---|---|
| Semantic | Relevance to query | Cosine similarity (All-MiniLM-L6-v2) |
| Recency | Freshness | Exponential decay, 30-day half-life |
| Usage | How often it's been queried | Sigmoid curve on use count |
| Feedback | Explicit relevance ratings | Useful / not-relevant ratio |
Documents that get queried more rank higher. Documents marked "useful" rank higher. Stale documents fade. The store learns what matters.
[dependencies]
conflux-core = { path = "conflux-core" }
use conflux_core::{Store, QueryOptions, IngestSource, IngestOptions, FeedbackRating, FeedbackOptions};
let mut store = Store::open(Path::new("~/.conflux"))?;
// Query
let results = store.query("market conditions Q1", QueryOptions::with_limit(10))?;
for r in &results {
let content = store.read_content(r.document.id)?;
println!("{}: {:.3}", r.document.title, r.score);
}
// Entity-based retrieval
let docs = store.documents_by_entity("Federal Reserve", 20)?;
// Record feedback
store.record_feedback(doc_id, FeedbackRating::Useful, FeedbackOptions::default())?;
See docs/FLOWFLUX_INTEGRATION.md for a complete API guide written for downstream tool integration.
| Type | Default Expiration | Intended Use |
|---|---|---|
| News | 7 days | Breaking news, daily updates |
| Data | 30 days | Reports, statistics, market data |
| Position | 90 days | Analysis, opinion, predictions |
| Reference | Never | Foundational material, historical data |
Lifecycle runs automatically on store open. Expired documents are archived. Documents unused for 180 days are flagged stale. Archives older than 30 days are purged. All configurable in config.toml.
# Run the MCP server for AI assistant integration
conflux-mcp --store ~/.conflux
Exposes tools over JSON-RPC 2.0 on stdio: query, ingest, get_document, list_documents, search_entities, store_health, record_feedback, set_examination_status, set_evidence_quality, add_citation, get_citations.
v0.2.0 — Evidence tracking and citation chains:
add_citation, get_cited_documents, get_citing_documents)cited → retrieved → examined → challenged)set_examination_status, set_evidence_quality, add_citation, get_citationsv0.1.0 — Core functionality:
MIT
5 commits
Rust
100.0%