Query syntax Start it

The client is
the same binary

Nothing else to install. The binary you downloaded is the server, the MCP endpoint and this REPL, and it connects to http://localhost:9480 unless told otherwise.

terminal
./cameodb client -i

# another node, over TLS
./cameodb client -i --connect https://cameodb.example.com

# a self-signed certificate, development only
./cameodb client -i --connect https://localhost:9480 --insecure

A global --insecure covers the whole session. The same flag on a single command relaxes only that one remote fetch, so loading from a self-signed host does not lower the trust of the connection you are working over.

Find your way

Tab knows what
the node holds

The session caches index metadata on startup and refreshes it after connect and either list command, so completion answers from the live schema rather than from whatever was true when the REPL opened.

healthCluster health, pretty-printed.
list indexesEvery index with document counts and field names.
list index <name>One index in full: stats and schema.
search books <TAB>Field names with type hints: title: [text], year: [numeric], active: [true/false].

A completed field arrives as title: with the colon already typed, ready for a value. A word the command continues past brings its own space, so one Tab settles it and the next moves on, and the +, − and ! modifiers survive completion rather than being eaten by it.

Bring data in

Point it at a file
or at a URL

CSV, TSV, JSON, JSONL and NDJSON, local or over HTTP(S). Gzip and Zip archives are decompressed in flight, so a public dataset loads without being downloaded and unpacked first.

schema detect <file>Read a file and report the schema it implies, without applying it.
schema load <index> <file>The same detection, applied to an index.
data load <index> <file>Batched ingest. 4,000 documents per batch unless --batch-size says otherwise.
delete <index>Prompts for the index name and proceeds only on yes.
cameodb client
cameodb@localhost ▶ data load hugdata \
  https://huggingface.co/datasets/.../data.jsonl.gz
Day to day

Built to be left
open all day

The details that decide whether a tool gets used twice.

History that survives

Sessions persist to ~/.cameodb/client_history, with Ctrl-R reverse search, arrow keys, Home and End: Rustyline navigation, not a bare read line.

Readable, and pipeable

Colorized JSON by default, in the manner of jq, with a plain fallback so a pipe or a CI log gets text rather than escape codes.

The editor never blocks

The line editor runs under spawn_blocking while requests stay async, so a slow query does not freeze the prompt you are typing at.

Hints in your language

Field types are shown as [text], [numeric], [decimal], [exact] and [true/false] rather than engine type names.