liney-cli

A command-line tool for inspecting and controlling Liney, a workspace that runs several coding agents in separate panes or tabs.

In plain words
What is it for?
Use it to list panes, read their output, check agent status, send text or keys, open panes, and split workspaces.
Why use it?
It lets you check other agent sessions and coordinate them without switching manually between workspaces.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/everettjf/liney/liney-cli
Any agent
npx skills add everettjf/liney --skill liney-cli
Clone the repo
git clone --depth 1 https://github.com/everettjf/liney

Made for: Claude Code, Codex.

Per session 195 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,348 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00195 $0.01348
Opus 5 $0.00097 $0.00674
Sonnet 5 $0.00039 $0.00270
Haiku 4.5 $0.00019 $0.00135

Measured 3d ago against content hash 2dec5a334a39, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade B, and why

liney-cli scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

sudo ln -sf /Applications/Liney.app/Contents/MacOS/Liney /usr/local/bin/liney
skills/liney-cli/SKILL.md · 125 lines

How it starts

The opening of the file, as written. The whole thing — 125 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Liney CLI

Use liney only when the task is to inspect or control the running Liney GUI app: list/read panes, check sibling agents, send text/keys, or report your own status. Do not use it merely because the current shell is inside the Liney repo.

Auth

Most of the time you need to do nothing. When Settings → URL Scheme is enabled, Liney injects LINEY_CONTROL_TOKEN into every pane's environment, so an agent running in a Liney pane can call the mutating commands (open, split, send-keys) with no setup.

  • No token at all: session list, read, agents (read-only inspection) and notify, status (self-reports). These always work.
  • Token (auto-injected, or export LINEY_CONTROL_TOKEN=<token> if you run from outside a Liney pane): open, split, send-keys.

Identify a pane before acting

Always resolve a concrete pane UUID before read or send-keys.

liney session list --json | jq -r '.[].pane'   # all panes (id, cwd, branch, ports, status)
liney agents --json       | jq -r '.[].pane'   # only panes with a detected/reported agent

liney agents is the right starting point for "which agents are blocked / working / done?"; liney session list is the full pane inventory including plain shells.

If your own session was launched from a Liney pane, the focused pane is often you. Treat focused pane IDs as something to identify and avoid unless you mean to operate on yourself.

self_pane="$(liney agents --json | jq -r '.[] | select(.focused) | .pane')"

Read another pane

liney read --pane "$pane" --last 80 --json | jq -r '.text'
liney read --pane "$pane" --scrollback --json | jq -r '.text'     # include history
liney read --pane "$pane" --last 200 --wait-stable --json | jq -r '.text'

--wait-stable re-reads until the screen stops changing — use it when an agent's TUI may still be streaming a response so you don't read a half-painted frame.

Drive another pane

liney send-keys "$pane" 'npm test\n'          # text, trailing \n submits
liney send-keys "$pane" $'\x03'               # Ctrl-C
liney open ~/proj --worktree ~/proj/.wt/x     # open a repo / switch worktree
liney split --axis vertical --pane "$pane"    # split a pane

Read the full file on GitHub · 125 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 125 lines · 195 tokens per session scan B 2dec5a334a39

Subscribe to this mod's changes

liney-cli is a skill published in the GitHub repository everettjf/liney (149 stars, last pushed 5d ago), licensed Apache-2.0. It adds 195 tokens to every session and 1,348 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.