Docs · CLI

The Qoren command line

The CLI does what the console does: create environments, deploy and message agents, read logs, and check what you are spending. It talks to the same API the console does, through the same account and the same plan limits, so anything you can do in a browser you can put in a script, or drive from a full-screen terminal.

Install and sign in

The CLI ships as an npm package and needs Node 20 or newer. Signing in opens your browser once, and the token it creates is stored on your machine.

  1. 1qoren loginOpens a Qoren page asking you to approve this computer. Nothing is granted until you press Authorize.
  2. 2Approve in the browserThe page names the token and where it will be sent. It only ever sends the token back to your own machine.
  3. 3qoren whoamiConfirms which account and organization the CLI is now acting as.

Install, then authorize this computer

npm install -g @qoren/cli
qoren login
qoren whoami

Interactive mode

Run qoren with nothing after it and it opens full screen: environments, agents, jobs, a chat pane and your account, all driven by the keyboard. It is the same API and the same plan limits as the commands, so it is a different way to reach your fleet rather than a different fleet.

  • Tab or 1 to 5 move between sections, arrow keys or j and k move within a list, enter opens what is selected, and ? lists every key in context.
  • A message to an agent streams in as it is written, naming the tool the agent is running, instead of waiting silently for the whole reply.
  • When a region cannot run the size you asked for, it offers you the region that can, rather than printing a flag to run again with.
  • Piping is unaffected: with no terminal attached, qoren on its own still prints the help text, and --json is refused rather than half-honoured.

Open it, or name it explicitly

qoren
qoren tui

Environments

An environment is the host your agents run on. Creating or resizing one is a job the CLI follows step by step, so the command finishes when the work does.

  • Sizes are light, standard, heavy and max. Your plan sets the ceiling; qoren account options shows what you may use.
  • Sizes are named by agent capacity in the console: light 1, standard 2, heavy 5, max 10.
  • Resizing restarts the environment, so its agents are briefly unreachable.
  • Destroying an environment destroys the agents on it.
  • On accounts with clients turned on, qoren env create --client puts a new environment under a client, and qoren env assign moves an existing one, or takes it off with none.

Create an environment and list what you have

qoren env create --name production --size standard
qoren env ls
qoren env resize env_abc123 --size heavy

Agents

Deploying an agent builds it from a template onto an environment. It is a twelve step install, and the CLI prints each step as it happens.

  • A message runs one turn of the agent and can take minutes; the CLI waits and prints the reply.
  • qoren agent exec runs a shell command as the agent's own confined user.
  • qoren agent status probes the agent and lists its recent failures with suggested fixes.
  • qoren agent doctor runs the runtime's own doctor (openclaw doctor or hermes doctor) and lets it repair what it finds. The platform already does this for every agent once a day; --history shows those checkups, and --no-repair makes a run report-only.
  • qoren agent keys lists the keys an agent carries by name, and --revoke takes the ones you set back off it. Values never leave the agent.
  • qoren agent chatgpt-login signs a Codex agent into your ChatGPT account: it prints a one-time code, you approve it in a browser, and the agent's turns then run on your ChatGPT plan credits.
  • qoren agent share publishes one workspace file as an expiring public URL and prints it. The link opens a page that renders the file, so the recipient reads it in a browser and downloads it if they want to. The URL is shown once, qoren agent links shows what is still out there, and qoren agent unshare takes one back.

Deploy an agent, talk to it, and read its log

qoren account templates
qoren agent create --env env_abc123 --template inbox-triage --name "Inbox triage"
qoren agent message agt_def456 "Summarize what came in today"
qoren agent logs agt_def456 --limit 100

Scripting and CI

Every command takes --json, and in that mode stdout carries only the payload. Progress and warnings go to stderr, so piping into another tool is safe.

  • Create a token for CI under Settings, CLI tokens, and set it as QOREN_TOKEN. It overrides any stored login.
  • Exit codes: 0 success, 1 the request failed, 2 a mistake in the command, 3 sign in again, 4 the plan does not allow it.
  • Add --no-wait to any command that starts a job to get the job id back immediately, then follow it with qoren jobs watch.

In a pipeline

export QOREN_TOKEN=qrn_...
qoren env ls --json | jq -r '.[].name'

Anything not yet a command

The CLI has a command for the things people do most, not for all of the API. Any other endpoint is still reachable directly, with the same credential and the same rules.

Call an endpoint directly

qoren api GET fleetSummary
qoren api POST machines --data @environment.json

Commands

Run qoren <command> --help for the full options of any of these.

CommandWhat it does
qoren login / logout / whoamiManage the credential on this computer
qoren env ls / get / create / rmManage environments
qoren env rename / resizeChange an environment's name or size
qoren env assign <environment> <client|none>Put an environment under a client, or take it off
qoren clients list / create / rename / archiveManage the clients you run environments for
qoren agent ls / get / create / rmManage agents
qoren agent tasks / task-runs / task-add / task-set / task-rmList scheduled tasks, inspect runs, and manage schedules
qoren agent message / exec / logsWork with a running agent
qoren agent status / telemetryCheck an agent's health and spend
qoren agent usageSee the credits an agent spent and its sessions, on managed or your own key
qoren agent doctorRun the runtime's own doctor and self-repair, or list the daily checkups
qoren agent keysList the keys an agent carries, and revoke the ones you set
qoren agent chatgpt-loginSign a Codex agent into your ChatGPT account with a one-time code
qoren agent chatgpt-logoutPut the agent back on the platform inference key
qoren agent share / links / unsharePublish a workspace file as an expiring public URL, and take it back
qoren agent importDeploy an agent from an export of a self-hosted Hermes, OpenClaw or Codex install
qoren account usage / spendingSee credits and infrastructure cost
qoren account costsSee what each client cost over a window, in credits and dollars
qoren account options / templatesSee what your plan allows
qoren webhook create / ls / get / rmLet another service wake an agent
qoren webhook rules / events / pause / resumeChange what a trigger listens for and does
qoren webhook deliveries / delivery / replay / testSee what arrived and run it again
qoren jobs ls / get / watch / cancelFollow long-running work
qoren api <method> <path>Call any endpoint directly
qoren tuiOpen interactive mode

Frequently asked questions

In ~/.config/qoren/config.json, readable only by your user. It is a bearer token, so treat the file as a password. Set QOREN_TOKEN instead and the file is not consulted at all.

Keep reading

See it with a real agent.

The fastest way to understand the flow is to deploy a template and watch its first run.

Start free trial