Skip to main content

Requirements

  • Python 3.10 or later
  • The contree-client library (installed automatically)

Install

Verify the installation:

Development setup

To work on contree-cli itself:

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:
You will be prompted to enter:
  1. Token — entered securely (no echo)
  2. Project ID — your project identifier
The CLI verifies the token with the API and writes credentials to ~/.config/contree/auth.ini. If a profile already exists you will be prompted to confirm; use -y to skip the prompt. Resolution order for each field during contree auth (first match wins):
  1. CLI flag (--token, --url, --project)
  2. Environment variables, in order:
    • token: CONTREE_TOKEN, then NEBIUS_API_KEY
    • URL: CONTREE_URL
    • project: CONTREE_PROJECT, then NEBIUS_AI_PROJECT
  3. Interactive prompt
So if these variables are already in your environment and no flags are passed, contree auth picks them up automatically, no interactive prompts needed:
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:
List all profiles:
Switch the active profile permanently:
Or use a profile temporarily (single session, no config change):

Token from environment

CONTREE_TOKEN and NEBIUS_API_KEY are read only by contree auth during profile registration; runtime commands always read credentials from the saved profile. To bootstrap a profile entirely from environment variables, run auth non-interactively:

Inline token

Pass --token to any command to override the saved profile for a single invocation:

You’re authenticated. Next: Your First Sandbox.