CLIO Coder
All tutorials

Getting started5 min read

Your first session with CLIO Coder

Connect a model, open a repository, and ask CLIO Coder to explain how it builds and runs its tests.

Written for
v0.8.0
Works in
Terminal · Desktop alpha
Basis
Recorded session
Updated
Terminal recording of a first launch of CLIO Coder 0.8.0 with no model configured: clio-coder starts setup, which finds a LiteLLM model server at http://127.0.0.1:4000 serving qwen3.8-27b. Choosing it sends one test message, answered in 0.4 s, and saves the settings. Chat opens with the model ready, the first prompt asks how the repository builds and runs its tests, and the recording ends while the agent plans its first reads of the repository.
First launch: setup finds a local model server, tests it, and saves it; chat opens and the first prompt is sent. The recording covers setup through the first prompt. Terminal · v0.8.0 Recording · 0:16
Transcript
First launch of CLIO Coder: setup finds a local model and chat opens
Recorded with CLIO Coder 0.8.0. Each section is the terminal screen at that moment.

== setup

~/projects/calibration-lab $ clio-coder
No model target is configured. Clio needs a model before it can do anything else, so setup starts now.

┌  Welcome to Clio Coder
│
│  Choose what you already use. Clio checks the endpoint and model list when the provider allows it.
│  Before saving, Clio sends the model one short test message (a few tokens; paid providers bill it).
│  Esc goes back a step, and from the first step leaves without saving. Your choices are written to your Clio settings
│  only after the test message, except a browser sign-in you complete.
│
│  Clio found a way to reach a model:
│
│  ❯ A model server at http://127.0.0.1:4000 (LiteLLM gatewa…  model qwen3.8-27b, run by user researcher
│    Set up something else                                     an API key, a subscription, or a server
│
│  ↑↓ move · Enter select · Esc cancel · q quit

== chat

┌  Welcome to Clio Coder
│
│  Choose what you already use. Clio checks the endpoint and model list when the provider allows it.
│  Before saving, Clio sends the model one short test message (a few tokens; paid providers bill it).
│  Esc goes back a step, and from the first step leaves without saving. Your choices are written to your Clio settings
│  only after the test message, except a browser sign-in you complete.
│
●  Using        A model server at http://127.0.0.1:4000 (LiteLLM gateway)
│
│  Testing litellm / qwen3.8-27b ...
│
◇  Testing litellm / qwen3.8-27b ... answered in 0.4 s.
◇  target litellm saved, runtime litellm
◇  chat runs on litellm, model qwen3.8-27b
◇  fleet default is litellm
◇  settings written to ~/.config/clio-coder/settings.yaml
◇  Saved. Chat and workers use this model. Change it any time with /model or /config.
│
│  Change any of this later:
●    clio-coder configure
│
└  Done

Clio Coder: terminal panes are not installed. Install them with `clio-coder panes install`.
┌─ >C_ Clio Coder v0.8.0 ──────────────────────────────────────────────────────────────────────────────────────────────┐
│ Model      litellm · qwen3.8-27b                                                                                     │
│ Autonomy   Default · reviewed approvals                                                                              │
│ Awareness  Not indexed yet                                                                                           │
│ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ │
│ /context init to index this repo                                                                                     │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✓ Qwen3.8 is ready · no request yet ━
 Ask Clio…  / for commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● ○ ○ ○ ━
default · ~/projects/calibration-lab · main                                                                     200K ctx
i clio-coder: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.   Ctrl+G X dismiss

== sent

│  Esc goes back a step, and from the first step leaves without saving. Your choices are written to your Clio settings
│  only after the test message, except a browser sign-in you complete.
│
●  Using        A model server at http://127.0.0.1:4000 (LiteLLM gateway)
│
│  Testing litellm / qwen3.8-27b ...
│
◇  Testing litellm / qwen3.8-27b ... answered in 0.4 s.
◇  target litellm saved, runtime litellm
◇  chat runs on litellm, model qwen3.8-27b
◇  fleet default is litellm
◇  settings written to ~/.config/clio-coder/settings.yaml
◇  Saved. Chat and workers use this model. Change it any time with /model or /config.
│
│  Change any of this later:
●    clio-coder configure
│
└  Done

Clio Coder: terminal panes are not installed. Install them with `clio-coder panes install`.
>C_ Clio Coder v0.8.0 · litellm · qwen3.8-27b

▌ Explain how this repository builds and runs its tests. Identify the main entry points and suggest one verification
▌ task. Do not change files yet.

i Reply from litellm · qwen3.8-27b

│ … 3 rows · /view
│ project type is TypeScript. The last commit is "Add temperature conversions with tests".
│ Let me explore the repository structure. I'll batch the independent reads/search

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● Qwen3.8 is thinking · Esc stops ━
 Ask Clio…  / for commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ctx ▰▱▱▱▱▱▱▱▱▱ · ● ○ ○ ○ ━
default · ~/projects/calibration-lab · main                                               11.2K/200K (5.6%) · ≈106 tok/s
Type to steer · Esc stops the run · Alt+U Dashboard
On this page1. Install CLIO Coder 2. Connect a model 3. Open a workspace 4. Ask a focused question 5. Make the next task specific Keep going

CLIO Coder works in the repository you open. For your first session, give it a small, concrete task: explain how the project builds and runs its tests. That lets you see how it reads code and uses tools before asking it to make a change.

1. Install CLIO Coder

The installer brings its own Node.js and needs no root. Linux, macOS, and WSL are the primary platforms. Native Windows is best effort, so use the current stable release. On Linux, the installer offers to add the desktop app when it finishes.

Shell

curl -fsSL https://coder.iowarp.ai/install.sh | sh

2. Connect a model

Open a terminal in a repository you know and start CLIO Coder:

Shell

cd /path/to/your/project
clio-coder

With no model configured, setup starts on its own:

No model target is configured. Clio needs a model before it can do anything else, so setup starts now.

Setup looks for a provider key in your environment, a stored sign-in and a local model server, and lists what it found. Pick one, or choose Set up something else and answer what you have: an API key, a subscription, a model server or gateway, or a setup file from your lab or team. Use a model that supports tool calling.

CLIO Coder sends the model one short test request and saves only when it answers; a browser sign-in you complete is the exception. In the recording, setup found a model server and saved it:

◇  Testing litellm / qwen3.8-27b ... answered in 0.4 s.
◇  target litellm saved, runtime litellm
◇  chat runs on litellm, model qwen3.8-27b
◇  fleet default is litellm
◇  settings written to ~/.config/clio-coder/settings.yaml
◇  Saved. Chat and workers use this model. Change it any time with /model or /config.

clio-coder configure runs setup again at any time. Its Connect by endpoint is the shortcut when you already know the URL. LM Studio commonly serves at http://localhost:1234; Ollama commonly serves at http://localhost:11434. The connection guide covers setup and credentials.

If you have used CLIO Coder before, you can skip this step. A chat route you already chose stays in use, and CLIO Coder will not swap it for another when it stops working.

If a connection fails, run:

Shell

clio-coder doctor

3. Open a workspace

When setup saves, the terminal workspace opens in the same folder. In the recording, its header read Model litellm · qwen3.8-27b and the status line ended 200K ctx, the context window of the model it found. Later, clio-coder opens the workspace directly.

Or open the desktop alpha in your browser:

Shell

clio-coder gui --open

In the desktop, open a workspace folder and start a task. If you have not configured a model, Guided setup is also available in the browser; terminal configuration is optional. For this tutorial, either interface gives you a place to enter the first request.

4. Ask a focused question

Try this request:

Explain how this repository builds and runs its tests. Identify the main entry points and suggest one verification task. Do not change files yet.

Follow the tool activity as CLIO Coder reads the repository. The recording ends while it plans its first reads. If an approval card appears, read the call before allowing it. If the answer misses an important directory or build system, name it in a follow-up.

5. Make the next task specific

Once you understand the project, ask for one change you can check. Name the problem, what to do and how to verify it. The recording below gave this request for the project's one failing test:

The absolute-zero test fails. Find the cause, fix it, and run the test check.

Terminal recording of a first task in CLIO Coder 0.8.0: asked why the absolute-zero test fails, the agent reads the source, changes kelvin <= 0 to kelvin < 0 in temperature.mjs, runs the declared test check with exit 0, and reports that all seven tests pass and that negative Kelvin is still rejected.
A first task at default autonomy: the agent finds an off-by-one guard, edits it, and runs the project's declared test check without asking. Terminal · v0.8.0 Recording · 0:27
Transcript
A first task in CLIO Coder: fix a failing test and verify
Recorded with CLIO Coder 0.8.0. Each section is the terminal screen at that moment.

== ready

~/projects/calibration-lab $ clio-coder
Clio Coder: terminal panes are not installed. Install them with `clio-coder panes install`.
┌─ >C_ Clio Coder v0.8.0 ──────────────────────────────────────────────────────────────────────────────────────────────┐
│ Model      litellm · qwen3.8-27b                                                                                     │
│ Autonomy   Default · reviewed approvals                                                                              │
│ Awareness  Not indexed yet                                                                                           │
│ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ │
│ /context init to index this repo                                                                                     │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✓ Qwen3.8 is ready · no request yet ━
 Ask Clio…  / for commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● ○ ○ ○ ━
default · ~/projects/calibration-lab · main                                                                     200K ctx
i clio-coder: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.   Ctrl+G X dismiss

== tui-verify


▸ read temperature.mjs · line_numbers · lines 1-41 of 41 · 1.5KB ✓ · 30ms
▸ read calibration.test.mjs · line_numbers · lines 1-67 of 67 · 3.3KB ✓ · 31ms

│ Thinking · Found it. The absolute zero test on line 20 asserts `kelvinToCelsius(0)` === -273.15, but `kelvinToCelsius`
│ throws a RangeError when kelvin <= 0 (line 21). The test also expects 0 K to be valid. Fix: allow 0 K (change `kelvin
│ <= 0` to `kelvin < 0`).

✦ I found the issue: kelvinToCelsius(0) at temperature.mjs:21 rejects 0 K with a RangeError due to the kelvin <= 0
  check, but the test at calibration.test.mjs:20 expects absolute zero to be valid. I'll fix it by changing the guard to
  kelvin < 0.

± edited temperature.mjs · +1 -1 ✓ · 308ms
  │ -21    if (kelvin <= 0) {
  │ +21    if (kelvin < 0) {
  │  22       throw new RangeError(`Kelvin temperature ${kelvin} is below absolute zero (0 K)`);
  │  23    }
  │  24    return kelvin - CELSIUS_KELVIN_OFFSET;
  │  25 }
  │     ...

│ Thinking · /view

$ checked test · exit 0 · 19 lines ✓ · 558ms
  │ … 17 earlier lines · /view
  │ ℹ todo 0
  │ ℹ duration_ms 75.108879

│ Thinking · All 7 tests passed. The "rejects temperatures below absolute zero" test includes kelvinToCelsius(-0.001)
│ and (-1), both

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● Qwen3.8 is thinking · Esc stops ━
 Ask Clio…  / for commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ctx ▰▱▱▱▱▱▱▱▱▱ · ● ○ ○ ○ ━
default · ~/projects/calibration-lab · main *                                             13.7K/200K (6.9%) · ≈117 tok/s
Type to steer · Esc stops the run · Alt+U Dashboard

== tui-verify-result


± edited temperature.mjs · +1 -1 ✓ · 308ms
  │ -21    if (kelvin <= 0) {
  │ +21    if (kelvin < 0) {
  │  22       throw new RangeError(`Kelvin temperature ${kelvin} is below absolute zero (0 K)`);
  │  23    }
  │  24    return kelvin - CELSIUS_KELVIN_OFFSET;
  │  25 }
  │     ...

│ Thinking · /view

$ checked test · exit 0 · 19 lines ✓ · 558ms
  │ … 17 earlier lines · /view
  │ ℹ todo 0
  │ ℹ duration_ms 75.108879

│ … 3 rows · /view
│ edge case: `-0 < 0` is false, so kelvinToCelsius(-0) returns -273.15. This is definitely correct behavior (in JS, -0
│ is treated numerically as 0). No need to belabor the point. Done.

✦ Fixed. The cause: kelvinToCelsius rejected kelvin <= 0, so the test's kelvinToCelsius(0) at calibration.test.mjs:20
  threw a RangeError — the guard treated 0 K itself as invalid instead of only below-absolute-zero values. Changing it
  to kelvin < 0 at temperature.mjs:21 keeps negative Kelvin (e.g. -0.001, -1) rejected, as the RangeError test still
  confirms.

  All 7 tests pass now, measured with the test check.

✓ Done · 15s · 5 calls · in 15.3k · out 750 · cached 47.1k

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✓ Qwen3.8 finished ━
 Ask Clio…  / for commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ctx ▰▱▱▱▱▱▱▱▱▱ · ● ○ ○ ○ ━
default · ~/projects/calibration-lab · main *                                          14.1K/200K (7.1%) · last 93 tok/s
i tip: /help lists every command and key, and you can ask me about Clio itself any…     Alt+U +1 more · Ctrl+G X dismiss
Alt+M Model · ? Keys

The agent changed kelvin <= 0 to kelvin < 0 in temperature.mjs, ran the declared test check (checked test · exit 0), and ended its report with All 7 tests pass now, measured with the test check.

Use your project's real test name. Read the diff and the check output yourself before you commit the change.

Keep going

In the terminal, /help lists commands, /model selects a model, /settings opens the settings center, and /config opens your connections, where Add a target runs setup again without leaving the session.

When you quit, CLIO Coder prints a summary of the session and a /resume <id> line. Start clio-coder again and type that line to return to the conversation, or use /resume alone to pick from a list.

The commands guide covers shortcuts and session controls. The tools guide explains the repository tools and their permissions.

By The CLIO Coder team · CLIO Coder

Continue with the documentation