Skip to main content

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:

  1. VIJIL_CONSOLE_URL
  2. console_url in ~/.vijil/config.yaml (what auth init and auth login write)
  3. url in ~/.vijil/credentials.json — the carrier, written by whichever client (this CLI or the vijil SDK) logged in most recently, so configuring one client is enough for the other
  4. 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.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vijil-console 0.4.14
File Size Uploaded Provenance Actions
vijil_console-0.4.14.tar.gz 77.3 kB Without provenance Details for vijil_console-0.4.14.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for vijil-console 0.4.14
File Interpreter ABI Platform Actions
vijil_console-0.4.14-py3-none-any.whl Python 3 none any Details for vijil_console-0.4.14-py3-none-any.whl

Total release size: 181.0 kB

Release files / vijil_console-0.4.14.tar.gz

Download URL vijil_console-0.4.14.tar.gz
Size 77.3 kB
Tags Source
SHA-256 checksum
How to use checksums
04eb88487c0c2517e0f7b8a8324bed288a072092d8001ee104a40e68f3caf72a
BLAKE2b-256 checksum
How to use checksums
9e024b4dfb83ab0bab3d0c529e06ae053b9bf731a645945a7666760410ddb06d
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.14-py3-none-any.whl

Download URL vijil_console-0.4.14-py3-none-any.whl
Size 103.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
459b956695f8a232d301d8ee8d386eb9c5e227c6e56063a2a1f5cc3c8612a868
BLAKE2b-256 checksum
How to use checksums
18cf65216da2ce6e9a2ec87ab4359b86eef78d0086a5566c8085e9f26756362e
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.14

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.

Release history Release notifications | RSS feed

This release

0.4.14 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page