Install & Authenticate¶
Requirements¶
Python 3.10 or later
No external dependencies (stdlib only)
Install¶
uv tool install contree-cli
pip install contree-cli
pipx install contree-cli
git clone https://github.com/nebius/contree-cli.git
cd contree-cli
uv sync
Verify the installation:
contree --help
Development setup¶
To work on contree-cli itself:
git clone https://github.com/nebius/contree-cli.git
cd contree-cli
uv sync --group dev
make check # lint + type check
make tests # lint + type check + pytest
Authenticate¶
All ConTree API calls require a bearer token and a project ID.
Save credentials¶
Get an API token and project ID from your ConTree project, then save them:
contree auth
You will be prompted to enter:
Token — entered securely (no echo)
Project ID — your project identifier
The CLI verifies the token with the API and writes credentials to
~/.config/contree-cli/config.ini. If a profile already exists you will be
prompted to confirm; use -y to skip the prompt.
Resolution order for each field (first match wins):
CLI flag (
--token,--project)Environment variable (
NEBIUS_API_KEY,NEBIUS_AI_PROJECT)Interactive prompt
So if NEBIUS_API_KEY and NEBIUS_AI_PROJECT are already in your
environment and no flags are passed, contree auth picks them up
automatically — no interactive prompts needed:
export NEBIUS_API_KEY=eyJ...
export NEBIUS_AI_PROJECT=your-project-id
contree auth -y # fully non-interactive
Warning
Avoid contree auth --token=eyJ... — the token is visible in process
listings and shell history. Omit --token to use the secure prompt.
Named profiles¶
Store multiple tokens for different projects or environments:
contree auth --profile=personal
contree auth --profile=sandbox
List all profiles:
contree auth ls
Switch the active profile permanently:
contree auth switch personal
Or use a profile temporarily (single session, no config change):
export CONTREE_PROFILE=personal
contree images # uses personal
Token from environment¶
Set CONTREE_TOKEN to provide the token without a config file:
export CONTREE_TOKEN=eyJ...
contree images
Environment variables always take precedence over the config file.
Inline token¶
Pass --token to any command to override both config and env:
contree --token=eyJ... images
You’re authenticated. Next: Your First Sandbox.