Command-line interface for Moss semantic search — manage indexes, documents, and queries directly from your terminal.
Moss CLI wraps the Moss Python SDK so you can build and query semantic search indexes without writing any code. Ideal for quick prototyping, scripting, CI/CD pipelines, and data workflows.
- Full SDK coverage — every SDK operation available as a CLI command
- Semantic search — query indexes with configurable hybrid search (semantic + keyword)
- Index management — create, list, inspect, and delete indexes
- Document management — add, update, retrieve, and delete documents
- Local by default — downloads indexes for on-device queries,
--cloudto skip - Flexible auth — CLI flags, environment variables, or config file
- Multiple output formats — rich tables for humans,
--jsonfor scripts - Job tracking — poll background jobs with live progress display
- Pipe-friendly — stdin/stdout support for composing with other tools
pip install moss-cli# 1. Save your credentials
moss init
# 2. List your indexes
moss index list
# 3. Create an index from a JSON file
moss index create my-index -f docs.json --wait
# 4. Search it
moss query my-index "what is machine learning"
# 5. Search via cloud API (skips local download)
moss query my-index "neural networks" --cloudCredentials are resolved in this order:
- CLI flags:
--project-idand--project-key - Environment variables:
MOSS_PROJECT_IDandMOSS_PROJECT_KEY - Config profile: selected by
--profile,MOSS_PROFILE, or the active profile in~/.moss/config.json
# Option 1: Interactive setup (recommended)
moss init
moss init --profile staging
# Option 2: Environment variables
export MOSS_PROJECT_ID="your-project-id"
export MOSS_PROJECT_KEY="your-project-key"
export MOSS_PROFILE="staging"
# Option 3: Inline flags
moss index list --project-id "..." --project-key "..."
# Option 4: Profile-based usage
moss index list --profile staging
moss profile list# Create an index with documents from a JSON file
moss index create my-index -f documents.json --model moss-minilm
# Create and wait for completion
moss index create my-index -f documents.json --wait
# List all indexes
moss index list
moss index list --profile staging
# Get index details
moss index get my-index
# Delete an index
moss index delete my-index
moss index delete my-index --confirm # skip prompt# Add documents to an existing index
moss doc add my-index -f new-docs.json
# Add with upsert (update existing, insert new)
moss doc add my-index -f docs.json --upsert --wait
# Get all documents
moss doc get my-index
# Get specific documents
moss doc get my-index --ids doc1,doc2,doc3
# Delete documents
moss doc delete my-index --ids doc1,doc2# Search (downloads index and queries on-device by default)
moss query my-index "what is deep learning"
# Tune results: more results, keyword-heavy
moss query my-index "neural networks" --top-k 20 --alpha 0.3
# Cloud mode (skip download, query via cloud API)
moss query my-index "transformers" --cloud
# Interactive mode (keeps one loaded index for multiple queries)
moss query my-index --interactive
# Interactive mode with session defaults
moss query my-index --interactive --top-k 20 --alpha 0.4
# Note: interactive mode is local-only (no --cloud) and not supported with --json
# Note: with redirected/piped stdin, interactive mode runs the piped query (if provided) and exits
# In interactive prompt:
# /set alpha 0.5
# /set top-k 10
# /exit
# With metadata filter (local only)
moss query my-index "shoes" --filter '{"field": "category", "condition": {"$eq": "footwear"}}'
# Pipe query from stdin
echo "what is AI" | moss query my-index
# JSON output for scripting
moss query my-index "query" --json | jq '.docs[0].text'# Check job status
moss job status <job-id>
# Wait for job to finish (with live progress)
moss job status <job-id> --wait# Print version info
moss version
# Global JSON output
moss index list --json
moss doc get my-index --json
# List available auth profiles
moss profile list
# Delete a profile
moss profile delete staging --force[
{"id": "doc1", "text": "Machine learning fundamentals", "metadata": {"topic": "ml"}},
{"id": "doc2", "text": "Deep learning with neural networks"},
{"id": "doc3", "text": "Natural language processing", "metadata": {"topic": "nlp"}}
]Also supports a wrapper format: {"documents": [...]}.
id,text,metadata
doc1,Machine learning fundamentals,"{""topic"": ""ml""}"
doc2,Deep learning with neural networks,
doc3,Natural language processing,"{""topic"": ""nlp""}"cat docs.json | moss index create my-index -f -
cat docs.json | moss doc add my-index -f -| Flag | Short | Description |
|---|---|---|
--project-id |
-p |
Project ID (overrides env/config) |
--project-key |
Project key (overrides env/config) | |
--profile |
Credential profile name (overrides MOSS_PROFILE) |
|
--json |
Machine-readable JSON output | |
--verbose |
-v |
Enable debug logging |
| Model | Description |
|---|---|
moss-minilm |
Lightweight, optimized for speed (default) |
moss-mediumlm |
Balanced accuracy and performance |
custom |
Used automatically when documents include embeddings |
Copyright (c) 2026 InferEdge Inc. — BSD 2-Clause License.
See LICENSE for full terms.