Projects
List, inspect, create, switch, and delete Kitaru projects from the CLI, SDK, and MCP server
A Kitaru project is the workspace where your executions, artifacts, deployments, stacks, and secrets are grouped on a Kitaru server.
A concrete example helps: imagine one server used by the same team for production and staging. If your active project is production, then kitaru executions list shows production executions and KitaruClient() reads production deployments. If you switch to staging, the same commands look at staging instead. The server did not change; the selected project changed.
There are two normal ways to choose a project:
Persist it for your local shell: run
kitaru project use production. Kitaru remembers that choice for later CLI and SDK calls.Set it explicitly for headless environments: set
KITARU_PROJECTin CI, Docker, cron jobs, and other non-interactive processes.
KITARU_PROJECT wins over the persisted choice. That is intentional: a CI job should not silently inherit whatever project someone last selected on a laptop.
List and inspect projects
kitaru project list
kitaru project current
kitaru project show productionUse JSON output when another tool will consume the result:
kitaru project list -o json
kitaru project current -o jsonThe serialized project shape is the same across CLI and MCP:
{
"id": "project-id",
"name": "production",
"display_name": "Production",
"description": "Customer-facing runs",
"is_active": true
}display_name and description may be null when they are not set.
Create and switch projects
Create a project:
By default, project create also activates the new project. After that command, subsequent Kitaru commands use staging unless an environment variable or process-local override says otherwise.
If you want to create a project without switching to it:
Switch to an existing project:
That command asks the Kitaru backend to make production the active project and persists the choice in the same place the backend already uses for active project state. In practice, that means you do not get two competing answers to "which project am I using?" — Kitaru reads the same active project that it writes.
Delete projects
Project deletion is deliberately explicit:
Without --yes, the CLI refuses to call the backend delete operation. Deleting a project removes durable server state, so do not use it as a smoke-test or health check command.
Login with a project
When connecting to a remote server, you can choose the project in the same step:
Text output says Project: production. It does not print the older Active project wording. JSON output includes the supplied project name or null.
If you omit --project, Kitaru does not guess one in the login output. You can then run:
Headless, Docker, and CI
For non-interactive processes, set the connection and project explicitly:
This is safer than relying on persisted local state. The job starts, reads the three variables, and there is no ambiguity about which server and project it will use.
If KITARU_SERVER_URL and KITARU_AUTH_TOKEN come from environment variables, Kitaru requires KITARU_PROJECT before project-scoped operations such as running, listing, replaying, or invoking executions. Auth-management commands are the exception because service accounts and API keys belong to the server, not to one project.
Python SDK
Use a normal client once a project is selected:
Project operations live under client.projects:
Use KitaruClient.for_project_management() when the process needs to list, create, or select projects before a project-scoped client can exist:
The distinction is simple:
KitaruClient()is for project-scoped work: executions, artifacts, deployments, and normal runtime operations.KitaruClient.for_project_management()is for choosing the project itself. It still validates the server/auth pairing, but it does not require a project to already be selected.
MCP tools
The MCP server exposes read/switch project tools for automation agents:
kitaru_projects_listkitaru_projects_currentkitaru_projects_showkitaru_projects_use
It does not expose project create/delete tools in this first pass. Agents can inspect the current project and switch to a named project, but durable project creation and deletion stay in the CLI and SDK.
A useful agent instruction is:
Precedence summary
When several sources name a project, Kitaru resolves them from lower to higher priority like this:
Persisted active project from
kitaru login --projectorkitaru project use ...Compatibility
ZENML_ACTIVE_PROJECT_IDenvironment variablePublic
KITARU_PROJECTenvironment variableProcess-local
kitaru.configure(project=...)
For normal usage, prefer the first and third entries: kitaru project use for interactive local work, and KITARU_PROJECT for CI, Docker, and other headless execution.
Related pages
Last updated
Was this helpful?