vijil-console
CLI for the Vijil AI trust platform. Manage agents, evaluations, evolutions, and more from the command line against a Vijil Console deployed in your VPC.
Install
pip install vijil-console
# or isolated:
pipx install vijil-console
Connecting to a deployed environment
The CLI talks to the Vijil Console nginx gateway — the single load balancer that routes to all backend microservices. You need one URL: the external address of the vijil-console-nginx service.
1. Find your Console API URL
If you have kubectl access to the EKS cluster:
kubectl get svc vijil-console-nginx -n vijil-console \
-o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
This gives you the raw ELB hostname. If a DNS record exists (e.g., console-api.dev05.vijil.ai), use that instead — check Route 53 for CNAME records pointing at this ELB.
2. Initialize the CLI
vijil-console auth init
# Prompt: Vijil Console URL []: http://console-api.dev05.vijil.ai
This saves the URL to ~/.vijil/config.yaml. The init command verifies connectivity by hitting /teams/healthz through the gateway.
Note: The gateway does not expose a root /healthz — health checks are routed per-service (e.g., /teams/healthz, /evaluations/healthz). The CLI uses /teams/healthz as the connectivity check since the teams service handles authentication and is always required.
3. Authenticate
vijil-console auth login
# Prompt: Email: user@example.com
# Prompt: Password: ********
The CLI sends a JSON POST /auth/jwt/login with {"email": "...", "password": "..."} to the teams service. On success it stores the JWT access token and (if available) refresh token in ~/.vijil/config.yaml.
If your account belongs to a single team, the CLI auto-selects it. If you belong to multiple teams, select one:
vijil-console team list
vijil-console team use <team_id>
The active team_id is injected automatically into API calls that require it (evaluations, harnesses, etc.). discover commands send it as the X-Vijil-Team header instead, and refuse to run until a team is selected.
4. Use
vijil-console agent list # list agents
vijil-console agent get <agent_id> # agent details
vijil-console eval run --agent-id <id> --wait # run evaluation, poll until done
vijil-console eval list # list evaluations
vijil-console eval results <evaluation_id> # get results
vijil-console harness list # list standard harnesses
vijil-console evolution run <agent_id> --wait # trigger Darwin evolution
vijil-console proposal list # list mutation proposals
vijil-console dashboard show --json # trust dashboard
Every command supports --json for machine-readable output and --help for usage details.
Configuration
All CLI state is stored in ~/.vijil/config.yaml:
console_url: http://console-api.dev05.vijil.ai
auth_token: eyJhbG...
refresh_token: ...
default_team_id: c58aea71-3861-4f28-b8c4-20832a2f22ee
Token refresh is automatic — if a request returns 401, the CLI attempts POST /auth/jwt/refresh before failing.
Which Console URL is in effect
Resolved from the first of these that carries a value:
VIJIL_CONSOLE_URLconsole_urlin~/.vijil/config.yaml(whatauth initandauth loginwrite)urlin~/.vijil/credentials.json— the carrier, written by whichever client (this CLI or thevijilSDK) logged in most recently, so configuring one client is enough for the other- the public default,
https://console-api.vijil.ai
A value that is not an http(s):// URL is a configuration error naming the file
it came from, never a network error. When one of these sources names a host
different from the one a command is actually calling, the CLI prints one warning
on stderr naming both — the usual cause of an unexplained 401 is a token minted
at one Console being sent to another.
VIJIL_CONSOLE_URL is not an ephemeral override at login time.
auth login / auth login-browser persist the URL they actually signed in
against into config.yaml, so a login run with VIJIL_CONSOLE_URL=<dev> pins
console_url: <dev> durably — unsetting the variable afterwards does not
undo it. That is deliberate (the token only works at the host that issued it);
run vijil-console auth init --url <other> to move it.
Which credential is in effect
VIJIL_CLIENT_ID + VIJIL_CLIENT_SECRET (an API key pair) → VIJIL_API_KEY
(a raw bearer) → auth_token in config.yaml → token in credentials.json.
The environment outranks disk deliberately, so a stale ~/.vijil/ file cannot
beat the credential a CI job was given. An unexpanded ${VIJIL_CLIENT_ID}-style
placeholder is not an environment credential and does not outrank anything:
some MCP hosts pass a manifest's env values through without expanding them,
and a literal that shadowed a session the user had just signed into would be the
worst of both outcomes (CON-725). VIJIL_TEAM_ID is read the same way. A rejected environment credential never
silently falls back to an on-disk session: the error says which URL it called,
which variable supplied the credential, that a session exists and is unused, and
the unset to run.
Checking it
vijil-console auth status # also --json, and --no-verify to skip the network
# Authenticated
# mode: env_pair
# credential: vk_W…HI
# url: https://console-api.example.com (source: own_config)
# team: c58aea71-3861-4f28-b8c4-20832a2f22ee
status reports the credential mode, the masked credential (never a full
secret — a 4-character prefix and a 2-character suffix, and *** with nothing
revealed for anything 16 characters or shorter), the URL, where the URL came
from — one of env, own_config, carrier, foreign_config (vijil-sdk's
config.toml), default, or invalid (nothing resolved; the reason is in
detail) — and the resolved team. It also lists unusable_url_sources: any
place a Console URL is configured that could not be used, by file and
classification, never by content. --json adds authenticated and verified
as separate keys: verified means the gateway was asked, so a rejected
credential or an unreachable host reports verified: true with
authenticated: false, and verified: false means only that nothing was
checked (--no-verify, or no credential at all).
Commands
Run vijil-console --help for the full list:
auth Authentication and CLI configuration (init, login, login-browser, logout, status, change-password)
team Manage team context (list, use)
agent Manage AI agents (list, create, get, update, delete, import)
eval Run and manage evaluations (run, status, list, results)
harness Manage test harnesses (list, custom-list, custom-create, ...)
dome Dome guardrail configuration and detection
telemetry Query observability telemetry (metrics, traces, logs)
evolution Darwin evolution engine (run, status)
proposal Manage mutation proposals (list, approve, reject)
genome Manage agent genomes (list, get, create, extract)
persona Manage test personas
policy Manage compliance policies and rules
dashboard Trust dashboard
discover Discover (Shadow control plane): scan surfaces, scanners and findings (see docs/DISCOVER2.md)
Metadata
Release files for vijil-console 0.4.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| vijil_console-0.4.13.tar.gz | 77.3 kB | Without provenance | Details for vijil_console-0.4.13.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| vijil_console-0.4.13-py3-none-any.whl | Python 3 | none | any | Details for vijil_console-0.4.13-py3-none-any.whl |
Total release size: 181.0 kB
Release files / vijil_console-0.4.13.tar.gz
| Download URL | vijil_console-0.4.13.tar.gz |
|---|---|
| Size | 77.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6df0145cc5f37da5689c9a8ffcb7003a6ac084b06f28f134c84d4716886e00db
|
|
BLAKE2b-256 checksum How to use checksums |
bdad0df33bc50c9d955a37c41eb554da6a7db8020d16c44315bb5007c57e753c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.12.15 Linux/7.0.0-1017-azure
|
Release files / vijil_console-0.4.13-py3-none-any.whl
| Download URL | vijil_console-0.4.13-py3-none-any.whl |
|---|---|
| Size | 103.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c587c45719230eca956040ea365ca94c965d617d1c3d1c34a086175c2fd782e
|
|
BLAKE2b-256 checksum How to use checksums |
abca481243b27c3f64ca623d8027c3e70d32e12b1c568e4cb62b0d63da994056
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.12.15 Linux/7.0.0-1017-azure
|
Security for vijil-console 0.4.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.