From navaris-cli
Guides navaris CLI first-time setup: Go/binary install, env vars, health checks, project/sandbox creation with Incus/Alpine, exec commands, and troubleshooting (401, connection refused, DNS).
npx claudepluginhub erans/navaris --plugin navaris-cliThis skill uses the workspace's default tool permissions.
Gets a user from zero to "I just exec'd something in a sandbox" with minimum friction.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Builds production-ready Apache Airflow DAGs with patterns for operators, sensors, testing, and deployment. For data pipelines, workflow orchestration, and batch jobs.
Share bugs, ideas, or general feedback.
Gets a user from zero to "I just exec'd something in a sandbox" with minimum friction.
From source (requires Go 1.26+):
go build -o navaris ./cmd/navaris
sudo mv navaris /usr/local/bin/ # optional; keep local if preferred
Or download a release binary from the navaris releases page and put it on $PATH.
| Env var | Required | Purpose |
|---|---|---|
NAVARIS_API_URL | yes | URL of navarisd, e.g. http://localhost:8080 |
NAVARIS_TOKEN | yes if daemon uses --auth-token | Bearer token for auth |
NAVARIS_PROJECT | recommended | Default project ID so --project isn't needed every call |
All three are also available as CLI flags: --api-url, --token, --project.
navaris project list --quiet --output json
Exit 0 = CLI installed, daemon reachable, auth accepted. Non-zero = see errors below.
sandbox create is asynchronous — it returns immediately with an operation; pass --wait to block until provisioning completes and receive the sandbox row instead.
navarisd (see README.md for daemon flags and the all-in-one Docker option) and capture the auth token it was started with.export NAVARIS_API_URL=http://localhost:8080
export NAVARIS_TOKEN=<token-from-step-1>
navaris project list --quiet --output json
Expect [] on a fresh daemon.export NAVARIS_API_URL=https://navaris.example.com
export NAVARIS_TOKEN=<token>
PROJECT_ID=$(navaris project create --name playground --output json | jq -r '.ProjectID')
export NAVARIS_PROJECT="$PROJECT_ID"
/ routes to Incus).
--wait blocks until the create operation finishes so the JSON we capture is
the sandbox row, not the still-pending operation:
SANDBOX_ID=$(navaris sandbox create --name hello --image alpine/3.21 --wait --output json | jq -r '.SandboxID')
navaris sandbox wait-state "$SANDBOX_ID" --state running --timeout 60s
navaris sandbox exec "$SANDBOX_ID" -- echo "hello from the sandbox"
navaris sandbox destroy "$SANDBOX_ID" --wait
| Symptom | Cause | Fix |
|---|---|---|
api error 401 (or HTTP 401) | NAVARIS_TOKEN missing or wrong | Re-export NAVARIS_TOKEN with the value the daemon was started with |
connection refused | Daemon not running on the configured host/port | Start navarisd or point NAVARIS_API_URL at the right host |
dial tcp: no such host | DNS miss or typo in NAVARIS_API_URL | Fix the URL |
--project flag or NAVARIS_PROJECT env var is required | sandbox create invoked without a project | Either pass --project <id> or export NAVARIS_PROJECT=<id> |