nichoc0

Clipline — Development skill for Claude Code

Development community

A phone line for Claude Code.

How to install Clipline

This entry records only its repository, not the path inside it, so there is no exact command to give. Open nichoc0/clipline and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Clipline does

A phone line for Claude Code. Call a number and a live Claude Code session answers, reads your files, runs commands, and talks back.

Alternatives in Development

  • Call Me — Minimal plugin that lets Claude Code call you on the phone 2.5k ★
  • Setup Context — Set up your Skill Memory — a pm-context.md every skill reads so outputs come back tailored to you 1.3k ★
  • Academic Pptx Skill — A Claude Skill for creating academic presentations (conference talks, seminar slides, thesis defenses, grant b 811 ★

README

Clipline

Call a phone number and the actual `claude` binary picks up. Not the API. The real Claude Code CLI, on your own subscription, reading your files and running your commands.

Clipline

It rides your Claude Code plan. No metered API, no per-minute voice bill. The gateway drives the real `claude` process in a tmux pane, so the thing answering the phone is the same CLI you run in your terminal, tools and all.

Demo

![REPL](assets/phonecall.gif)

![Gateway](assets/gateway_raw.gif)

Attach to a session you are already in

Start Claude Code in a named tmux session `/resume` the work you were doing then point Clipline at it. Now you call your phone and you are in the exact session you left. Same context same tools same conversation.

tmux new-session -s work claude
# inside it, /resume your session, then detach (ctrl-b d)
CLIPLINE_SESSION=work ./target/release/voice-gateway

Leave `CLIPLINE_SESSION` unset and Clipline spawns a fresh session for the call.

How it works

It is literally `tmux send-keys` into your live `claude` pane and `capture-pane` to read the reply back, with a per-turn sentinel token to know when it is done. It is a hack. It works. The whole point is that it drives the real binary, not an SDK, not a wrapper model.

`crates/voice-orchestrator/src/providers/repl.rs`. One `claude` session per call. Each turn types the caller line in, waits, and pulls the spoken line out of the `[SPK]` markers. The session holds its own context so a turn sends one line.

Pipeline

Telnyx PSTN -> Deepgram STT -> claude CLI (tmux) -> ElevenLabs TTS

Requirements

Rust stable. tmux. The `claude` CLI logged in. A Telnyx number with a Call Control app. Deepgram and ElevenLabs keys. A public HTTPS URL to the gateway.

Run

cargo build --release
cp .env.example .env
./target/release/voice-gateway

Point the Telnyx webhook at `https:///telnyx/voice` and call the number. First t