Skip to content

hlix projects

List, inspect, delete and watch projects, or send a message to the project manager.

Use hlix projects to inspect projects and communicate with their project manager. With --json, list and get return the API response unchanged in the envelope’s data field.

Terminal window
hlix projects list [--json]

Lists every project in the workspace the target chain resolved. It takes no positional arguments and no command-specific flags.

Expected result:

ID NAME STACK
------------------------------------ -------------- ------
6f1c2a9e-8f0b-4a7d-9d33-2f0b1c7e5a41 acme-invoices bun

An empty workspace prints No projects. and exits 0.

Terminal window
hlix projects get [project-id] [--json]
  • project-id (string, optional, default the bound project): which project to show. With no ID, the project this folder is bound to is used — found by walking up from --cwd. Outside a bound folder, omitting it exits missing_argument: A project id is required, or run this inside a folder bound to a project.

Expected result:

id 6f1c2a9e-8f0b-4a7d-9d33-2f0b1c7e5a41
name acme-invoices
stack bun
status active
repos 1
  • The human view selects columns and omits empty fields; the --json body does not. Use --json for the full fields.
  • A project in another workspace answers not_found rather than forbidden — the API does not confirm cross-tenant existence, and neither does the CLI.
  • At most one positional argument; a second exits invalid_usage.
Terminal window
hlix projects delete <id|name> [--yes] [--json]

Deletes a project selected by ID or exact, unique name. The command prints the selected name before deletion. Local project files are kept; the project’s managed repository and encrypted project files are removed.

Interactive use asks for confirmation. Non-interactive use, --json, and deletion of the project this folder is bound to require --yes. When names are ambiguous, pass the project ID.

Terminal window
hlix projects watch [--project <id>] [--json]

Shows the project as its project manager sees it, as it happens: the project’s status, cycle and task changes, agents starting and stopping, the decisions the manager makes, its messages, and every run it starts — including the ones it starts on its own when something happens in the project. It is read-only and runs until you stop it (Ctrl-C, or ESC / q as /watch in Hlix Code).

With no --project, the project this folder is bound to is watched. The first lines say where the project stands now and show its newest decisions and messages; after that, each change is one line.

acme-invoices: building (running)
cycle "Checkout": running
project manager: The checkout cycle is in review.
task "Cart totals": done
cycle "Checkout": done
Cloud work landed. Run /pull (hlix pull) to bring it into this folder.

A dropped connection is reopened on its own, and a manager’s answer that was being written when it dropped continues where it stopped rather than starting again.

With --json, each line is one envelope (JSONL): data is { kind, text }, where kind is project, cycle, task, agent, preview, activity, message, tool, run or landed.

Terminal window
hlix projects message [--project <id>] <text> [--json]

Sends a message to the project manager on the project’s own chat — the one the dashboard uses — and prints the answer as it is written. With --json, data is { answer }. In Hlix Code the same command is /pm <text>.

A message sent while the manager is answering someone else waits its turn, and the command prints only the answer to your own message. A server that refuses the turn as a conflict exits conflict with The project manager is busy with another message. Try again in a moment; /watch shows what it is doing.

  • unauthenticated — No credential. Run `hlix auth login`, or set HLIX_API_KEY for CI.
  • forbidden — the key is valid but the user cannot act in the resolved workspace.
  • not_found on projects get — check the project ID, selected Workspace and your access.
  • workspace_mismatch — an override contradicts the folder’s binding. hlix status shows which source decided what.
  • missing_argument — run it inside a bound folder, or pass the ID (--project for watch and message).
  • conflict on projects message — the project manager is answering someone else. Try again.
  • unreachable — check the API URL and network connection.