Stimulir Console CLI — workspaces, API keys, BYOK, usage, inference, lab and compute.
Project description
stimulir CLI
Command-line interface for the Stimulir Console platform — workspaces, API keys, BYOK credentials, usage/billing, inference, and HybrIE lab/compute.
Built with Python 3.11+, Typer, Rich, and httpx.
Install
Once published to PyPI:
uv tool install stimulir
stimulir --help
# or run without installing:
uvx stimulir --help
From this repo (development):
uv tool install ./cli # isolated tool from the local source
# or, for live-editing development:
cd cli && uv venv && uv pip install -e .
Conda/miniconda note: if you use plain
pip install -einstead of uv, Anaconda Python builds skip the__editable__.*.pthhook, so the editable install silently fails to import (ModuleNotFoundError: stimulir_cli). uv avoids this entirely.
Python SDK
For application or backend code, add the package to that project's runtime environment instead of installing it as an isolated CLI tool:
uv add stimulir
Then import the SDK from the public package:
import os
from stimulir import StimulirClient
client = StimulirClient(
api_base=os.getenv("STIMULIR_API_BASE", "https://api.stimulir.com"),
api_key=os.environ["STIMULIR_API_KEY"], # hyb_...
)
The hyb_* key is the normal customer/runtime auth path. Stimulir derives the
workspace and allowed platform scope from the key, so application code does not
need to pass a workspace id for normal prompt, data, eval, or inference calls.
Login
Log in with your Stimulir account — auth defaults are baked in, nothing to configure:
stimulir login
# prompts for email + password, stores tokens in ~/.stimulir/credentials.json (0600)
(Non-production environments can override the auth endpoint via
SUPABASE_URL / SUPABASE_ANON_KEY env vars or ~/.stimulir/config.json.)
Already have a JWT from the console web app? Paste it:
stimulir login --token <supabase-jwt>
Sessions auto-refresh using the stored refresh token. Inspect or end your session with:
stimulir whoami
stimulir logout
Select a workspace
Most commands are scoped to a workspace (business profile):
stimulir workspace list
stimulir workspace use <workspace-id>
Commands
Agent — the AI engineer in your terminal
Bare stimulir (no subcommand, in a TTY) launches the interactive Stimulir
agent against the active workspace. The agent runs server-side (Pi through
code-runtime) and executes its tool intents — bash, file reads/writes, glob
search — on your machine, with approval prompts. The conversation lives
server-side, so the same session shows up in the Engineering traces panel.
# Start the agent (or pass an opening task)
stimulir
stimulir agent "Add a /health endpoint and wire it into the router"
# Resume an existing session
stimulir agent --session <session-key>
# Attach this machine as the local executor for a session started in the app
# (the chat composer's "Continue in: Local" dropdown)
stimulir attach [<session-key>]
Approvals stay on your machine — destructive commands (rm -rf, sudo, force push, key revocation) always prompt even under an "always allow" grant.
API keys (hyb_* inference keys)
stimulir keys create --name cli --env prod --expires-in-days 90 --save
stimulir keys list --include-revoked
stimulir keys revoke <key-id>
The plaintext key is shown exactly once; --save stores it in
~/.stimulir/credentials.json so stimulir infer can use it.
BYOK provider credentials
Providers: openai, anthropic, google_gemini, mistral, aws_bedrock,
azure_openai, together_ai, nebius.
stimulir byok add --provider anthropic --label "prod key" # secret prompted without echo
stimulir byok list
stimulir byok verify <credential-id>
stimulir byok remove <credential-id>
Workspace prompts
Versioned prompt management — every save creates a new immutable version, and
labels (e.g. prod) move between versions so you can promote or roll back
without editing application code.
stimulir prompts list
stimulir prompts get <key> [--label prod|--version N]
stimulir prompts versions <key>
stimulir prompts create --key <key> --file ./prompt.md --label prod --notes "<change notes>"
stimulir prompts update <key> <version> --notes "<change notes>"
stimulir prompts archive <key> <version>
stimulir prompts label <key> <version> <label>
Data assets
Curate datasets for the training loop, including from agent traces:
stimulir data list
stimulir data upload ./dataset.jsonl --stage raw --target sft
stimulir data from-trace <trace-id> --source agent --target sft
stimulir data stage <asset-id> <raw|cleaning|clean_view|snapshot|lab>
stimulir data unstage <asset-id>
stimulir data bulk-stage --ids <asset-id>,<asset-id> --stage lab --target sft
stimulir data update <asset-id> --name "<name>" --target sft
stimulir data snapshot <asset-id>
stimulir data remove <asset-id>
The typical flow is from-trace → stage … lab → snapshot — turn an
agent run into staged data, promote it, then pin a snapshot a training run
consumes.
Usage & billing
stimulir usage --window 30d --group-by model
stimulir billing snapshot
Inference
Uses a hyb_* API key (stimulir keys create --save or STIMULIR_API_KEY):
stimulir infer chat "Summarise IFRS 16 in one paragraph" --model hybrie-mid
stimulir infer chat "Write a haiku about ledgers" --model hybrie-small --stream
HybrIE lab (training + eval)
stimulir lab train sft --family qwen3-4b --lora-rank 8 --examples 500 --epochs 3 --lr 1e-4 --eval-examples 200 --seed 42 --checkpoint-dir runs/sft
stimulir lab train d2l --family qwen3-4b --examples 500 --epochs 3 --lr 1e-4 --eval-examples 200 --seed 42 --checkpoint-dir runs/d2l
stimulir lab train rl --family qwen3-4b --environment niah --prompts 64 --group-size 8 --policy hypernet --lr 1e-5 --kl-beta 0.05
stimulir lab jobs list
stimulir lab jobs get <job-id>
stimulir lab jobs cancel <job-id>
stimulir lab eval runs
stimulir lab eval get <run-id>
stimulir lab eval create-run --data-asset-id <asset-id> --prompt <key>:<version|label> --execute
stimulir lab eval execute-run <run-id>
stimulir lab eval niah --family qwen3-4b --checkpoint-dir ~/hybrie-mounts/d2l-artifacts/<job>/checkpoint --examples 200 --seed 42
stimulir lab eval adapter --family qwen3-4b --adapter-dir ~/adapters/invoices-lora --examples 200 --seed 42
stimulir lab eval rl --family qwen3-4b --environment niah --policy hypernet --checkpoint-dir runs/rl/<job> --tasks 50 --pass-threshold 0.8
stimulir lab adapters list
stimulir lab adapters get <adapter-id>
stimulir lab adapters load <adapter-id>
stimulir lab adapters unload <adapter-id>
Compute (GPU offers + instances + peers)
stimulir compute offers
stimulir compute up <offer-id> --count 2
stimulir compute list
stimulir compute status <instance-id>
stimulir compute down <instance-id>
stimulir compute peers list
stimulir compute peers add --name lambda-a100 --grpc http://10.0.0.5:9090 --realtime http://10.0.0.5:8011
stimulir compute peers remove <peer-id>
Models
stimulir models
HybrIE routing
lab, compute, and models go through the console proxy
({api_base}/api/v1/hybrie/*, Supabase JWT + workspace header) by default.
To talk to a HybrIE runtime directly, pass --endpoint http://host:port on
any of those commands, or persist it in ~/.stimulir/config.json as
hybrie_endpoint — requests then hit {endpoint}/v1/*.
Scripting
Every command accepts --json to emit the raw API response:
stimulir keys list --json | jq '.api_keys[].prefix'
Configuration reference
| File | Contents |
|---|---|
~/.stimulir/config.json |
api_base, workspace_id, hybrie_endpoint, supabase_url, supabase_anon_key |
~/.stimulir/credentials.json (0600) |
api_key, optional access_token, refresh_token, expires_at, email |
Common environment overrides: STIMULIR_API_BASE, STIMULIR_API_KEY,
SUPABASE_URL, SUPABASE_ANON_KEY. Use stimulir workspace use <id> to
persist the active CLI workspace.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stimulir-0.1.173.tar.gz.
File metadata
- Download URL: stimulir-0.1.173.tar.gz
- Upload date:
- Size: 54.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2b1751e8757b2ab0b69116ea8786a964f74d49bfd6296ac91a1cfb89b9b37d3
|
|
| MD5 |
3d3fdd601761c5970a4d57ae64faa0a5
|
|
| BLAKE2b-256 |
652585260a6c5f6371bd7ecd533e4b1f2dd8bf6be0b103d528ca7d96f21c5a11
|
Provenance
The following attestation bundles were made for stimulir-0.1.173.tar.gz:
Publisher:
release-all.yml on stimulir/stimulir-console
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stimulir-0.1.173.tar.gz -
Subject digest:
d2b1751e8757b2ab0b69116ea8786a964f74d49bfd6296ac91a1cfb89b9b37d3 - Sigstore transparency entry: 1813983670
- Sigstore integration time:
-
Permalink:
stimulir/stimulir-console@29e394af4c7a295b8af34a3c9d016a5ec019557e -
Branch / Tag:
refs/tags/v0.1.173 - Owner: https://github.com/stimulir
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-all.yml@29e394af4c7a295b8af34a3c9d016a5ec019557e -
Trigger Event:
push
-
Statement type:
File details
Details for the file stimulir-0.1.173-py3-none-any.whl.
File metadata
- Download URL: stimulir-0.1.173-py3-none-any.whl
- Upload date:
- Size: 57.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa76c9791bbca44f28427a82b192670a0540b65100e11ce0f0ec6cd46b667fc0
|
|
| MD5 |
ad678eb10caf55f00857c0c0cf59d19f
|
|
| BLAKE2b-256 |
c00757aea71736d370a160d26c8a63072f82de39756896f0a9c6265427461b89
|
Provenance
The following attestation bundles were made for stimulir-0.1.173-py3-none-any.whl:
Publisher:
release-all.yml on stimulir/stimulir-console
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stimulir-0.1.173-py3-none-any.whl -
Subject digest:
aa76c9791bbca44f28427a82b192670a0540b65100e11ce0f0ec6cd46b667fc0 - Sigstore transparency entry: 1813983757
- Sigstore integration time:
-
Permalink:
stimulir/stimulir-console@29e394af4c7a295b8af34a3c9d016a5ec019557e -
Branch / Tag:
refs/tags/v0.1.173 - Owner: https://github.com/stimulir
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-all.yml@29e394af4c7a295b8af34a3c9d016a5ec019557e -
Trigger Event:
push
-
Statement type: