YOUR DATA STAYS HERE.
COHERE MODELS ON TOP.
ONE BINARY UNDERNEATH.
A common on-prem setup: index the files and databases where they already live, keep the data inside the network, and use Cohere Rerank, Embed and Command on top. XERJ is that layer. It indexes files, folders and object storage on one CPU server today, and live Postgres tables from rc.102 (already on main), serves hybrid search and exact aggregations, answers structured questions with evidence through XERJ Query-1, and, from rc.102, hands the best hits to Cohere models when you turn them on (so far tested only against a mock of Cohere's API). XERJ is not affiliated with Cohere; the names below only say which API a setting talks to.
Add "rerank": {"provider": "cohere"} to a search and XERJ returns its top hits in Cohere Rerank's order. Endpoint configurable, so a private deployment keeps text inside. #2985
The proxy embedder calls Cohere's OpenAI-compatible route for semantic_text fields. Fixes a response-parsing bug on that route found while building it. #2983
cohere-tools.json gives Command six XERJ tools. The cookbook runs hybrid search, Rerank and /v2/chat; every citation resolves to a file and page. #2983
Any MCP client can call XERJ search, memory and XERJ Query-1 today. Query-1 compiles a question into a program over your facts and says UNKNOWN when the facts cannot back an answer (with known gaps in counting). How it works
| Capability | Status | Tested how |
|---|---|---|
Files, folders, S3, SQLite, SQL dumps via xerj autoindex | shipped (rc.101) | measured, see the worked example |
| XERJ Query-1 answers with evidence, MCP server (stdio) | shipped (rc.101) | measured |
| Live Postgres source: connect once, stays current (#2984) | on main, ships in rc.102 | measured against Postgres 16 |
| Table rows to facts for XERJ Query-1 (#2988) | on main, ships in rc.102 | measured |
Cohere Rerank provider on _search (#2985) | on main, ships in rc.102 | against a mock of Cohere's API; live run pending |
| Cohere Embed via proxy, Command tools, RAG cookbook (#2983) | on main, ships in rc.102 | against a mock; live run pending |
Native /v2/embed with input_type, int8/binary vectors; MCP over HTTP; MySQL source | roadmap | not built |
"Live run pending" means every request and response shape was tested against a mock of Cohere's documented API, and no call to Cohere's real API has been made yet. This page claims no Cohere accuracy, latency or cost figure.
# xerj.toml [rerank.cohere] api_key = "co-..." # or COHERE_API_KEY endpoint = "https://api.cohere.com/v2/rerank" # or a private Cohere deployment [embedding] mode = "proxy" default_endpoint = "https://api.cohere.ai/compatibility/v1" default_model = "embed-v5.0-pro"
curl -s -XPOST localhost:9200/policy-docs/_search -H 'content-type: application/json' -d '{
"query": {"match": {"body": "appeal deadline"}},
"rerank": {"provider": "cohere", "model": "rerank-v5.0-fast", "window": 30}
}'
# verify: the response has "_rerank": {"applied": true, "provider": "cohere", ...}
What leaves the machine, and only when you turn it on: the query and the text of up to window hits for Rerank; the text of embedded fields for Embed; the question and the selected hits for Command. Point each setting at a private Cohere deployment to keep all of it inside. Full reference: docs/COHERE.md.
We ran the whole setup on one laptop with 13 public NIST and CMS documents plus a synthetic 200,000-row claims table we generated, with the Cohere steps against a mock of Cohere's API: the worked example, with every measured number and what was not tested.