@termiq/cli
@termiq/cli
Run Claude Code, Gemini CLI, Cursor, or any shell over SSH or in CI — then walk away. TermIQ streams the session to your phone at termiq.io, pushes you the moment it finishes or stops to ask, and lets you answer Y/n right from the notification. Your machine does the work; your phone keeps you in control.
End-to-end encrypted — the TermIQ server is a blind relay that streams your output, never stores it.
Why the CLI
The headless half of a long-running task is exactly where you can't sit and watch — a remote box over SSH, a CI runner, an unattended host. Start the work, leave, and let TermIQ tell you when it needs you:
- Push the moment it matters — get notified when a task completes, is waiting for a confirmation, or hits an error, even with your phone in your pocket.
- Answer from the notification — approve a
Y/nprompt without opening anything; the answer goes straight to the terminal. - Reliable input — what you type from your phone reaches the terminal in order, even on a flaky mobile connection.
- Real-time sync — output streams to your phone with sub-second latency and reconnects on its own when the network changes.
- End-to-end encryption — terminal content is encrypted on your devices (XSalsa20-Poly1305); the server relays encrypted bytes it can't read. Streamed, never stored.
Works with Claude Code, Gemini CLI, Cursor, and any other terminal program — TermIQ mirrors whatever runs in the shell, so there's nothing AI-specific to configure.
Install
Requires Node.js 18+ and a free TermIQ account.
npm i -g @termiq/cliThe installed binary is termiq.
Usage
termiq # Start: spawn a shell + connect to termiq.io
termiq login # Authenticate via browser (Device Code Flow)
termiq login --token KEY # Authenticate with an API key
termiq logout # Clear stored credentials
termiq status # Show current authentication state
termiq --help # Show helptermiq spawns a new shell in your current terminal and connects it to termiq.io. Open termiq.io on your phone to watch and drive the session live. End the shell with exit or Ctrl+D to disconnect. (Running termiq inside an existing session is blocked so you don't nest by accident — pass --force to override.)
Headless / CI / SSH
For unattended hosts and pipelines, authenticate with an API key. Create one at termiq.io/settings/api-keys (keys are prefixed tiq_), then either log in with it:
termiq login --token tiq_your_api_key…or provide it through the environment — equivalent to --token, and convenient for CI:
export TERMIQ_TOKEN=tiq_your_api_key
termiqCheck the connection with termiq status; sign out with termiq logout.
Flags
| Flag | Description |
|---|---|
--server URL |
Override the server URL (default: https://termiq.io) |
--token KEY |
API key for headless login |
--watch, -w |
Enable the file watcher (off by default; respects .gitignore) |
--statusline |
Show a tmux-style status bar in the local terminal (off by default) |
--verbose, -v |
Verbose logging to stderr |
--log-level L |
Log verbosity: silent | error | warn | info | debug |
--log-to-file |
Write logs to ~/.termiq/logs/cli.log |
--force |
Start even when already inside a TermIQ session (nested run) |
--version, -V |
Print version and exit |
On your phone
Open termiq.io in your mobile browser, sign in with the same account, and add it to your home screen to install the PWA and enable push (iOS 16.4+ / Android). Set Quiet Hours to silence notifications overnight. With --watch on, the app also shows which files your session touched (respecting .gitignore), so you can follow along without opening an editor.
Configuration
Configuration and credentials live in ~/.termiq/:
config.json— server URL and agent namecredentials— authentication tokens (stored withchmod 0600)logs/cli.log— log file (written when--log-to-fileis set)
Command-line flags override values from config.json.
Plan
Free forever — 1 agent and 2 terminals, no credit card required.