Retrieved article excerpt
Open article ยท Retrieved 2026-09-26T00:24:08.560848+00:00
# KISS
[image](https://private-user-images.githubusercontent.com/322226193/656143726-08e96d6e-7409-419b-b9db-0149f2465083.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTAzODI1NDgsIm5iZiI6MTc5MDM4MjI0OCwicGF0aCI6Ii8zMjIyMjYxOTMvNjU2MTQzNzI2LTA4ZTk2ZDZlLTc0MDktNDE5Yi1iOWRiLTAxNDlmMjQ2NTA4My5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwOTI2JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDkyNlQwMDI0MDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lZTBjNDI3YWJmMGY0ZGEwNWRkMGNhMzJiOGYyZTExMDdlNjRiNTFiNjFlMjE5MGY5MDczY2JkNmRmMTZiNTQzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.eb-zaSsAQaIe0LGJnbwnifzRuIQ6NngiC1HfsX1lCQs)
A fast terminal coding agent that keeps the interface simple and gives you
control of the model, tools, sessions, and automation.
KISS has 44 built-in providers, including OpenAI Codex (ChatGPT Subscription), OpenAI API, Anthropic OAuth (Claude Subscription), Anthropic API, Meta Muse, Cursor,
Google, OpenRouter, Bedrock, Databricks, Snowflake, and GitHub Copilot. You can also add
OpenAI-compatible providers.
KISS is built in Rust and based on
[Pi](https://github.com/earendil-works/pi).
KISS takes its name and product philosophy from [Keep It Simple, Stupid](https://en.wikipedia.org/wiki/KISS_principle).
Why? Because I am stupid :)
## Why KISS
- **Start quickly.** The native terminal interface reaches its first warm frame
in about 5 ms.
- **Keep your work.** Resume, branch, compact, import, and export persistent
sessions.
- **Use your preferred model.** Choose from more than 1,000 catalog models or
add your own compatible provider.
- **Automate long tasks.** Run scheduled loops, measured autoresearch, parallel
subagents, and dynamic workflows.
- **Connect your tools.** Use local and remote MCP servers, including OAuth
servers.
- **Build on it.** Embed KISS through Rust, Python, TypeScript, WebAssembly,
JSONL RPC, or WebSocket RPC.
KISS uses four focused tools by default: `read`, `write`, `edit`, and `bash`.
Catppuccin Mocha is the default dark theme.
## Install
macOS and Linux:
```
curl -LsSf https://raw.githubusercontent.com/racetozero/kiss/main/install.sh | sh
```
Windows, including ARM64:
```
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/racetozero/kiss/main/install.ps1 | iex"
```
The installer selects the correct release, verifies its SHA-256 checksum, and
installs `kiss` in your user binary directory. On Linux, if the glibc
release needs a newer `GLIBC_*` version than the system provides, it
automatically installs the matching musl release. The macOS/Linux installer
adds `~/.local/bin` to your shell's startup file (bash, zsh, fish, or sh) so
new terminals can run `kiss`. Open a new terminal after installing, or run
`~/.local/bin/kiss` immediately.
Update later with:
```
kiss update
```
## Start in two commands
Sign in with a ChatGPT subscription and open KISS:
```
kiss login openai-codex
kiss
```
For a server or SSH session:
```
kiss login openai-codex --device-auth
```
Anthropic login and credential import are also available:
```
kiss login anthropic
kiss auth import
```
Use the interactive terminal or run one task:
```
kiss "explain this repository"
kiss -p "summarize the current changes"
cat error.log | kiss -p "find the cause"
```
## Work in the terminal
- Type `/` to find commands.
- Type `@` to find and attach files.
- Type `!command` to run a shell command.
- Press `Shift+Tab` to change reasoning effort.
- Press `Esc` or `Ctrl+C` to stop active work.
- Press `Ctrl+R` to expand or collapse long tool results.
- Press `Ctrl+D` on an empty input to exit.
- Use the Up arrow to restore earlier prompts.
KISS renders bold Markdown, cyan underlined terminal links, bare web links, and
syntax colors for fenced code.
Send a new instruction while the agent works. Press `Enter` to steer the
current task, or `Alt+Enter` to queue the instruction for later.
Useful commands include `/login`, `/model`, `/mcp`, `/compact`, `/resume`,
`/loop`, `/autoresearch`, `/jobs`, `/provider`, `/export`, `/cache-usage`,
`/bug`, `/fast`, `/update`, `/settings`, and `/hotkeys`.
Use `/fast` to toggle the low-latency tier for a supported provider. This
setting applies only to the current session, and provider costs can increase.
Use `/update` to update the installed KISS binary.
### Track cache efficiency
Prompt caching can reduce the cost of repeated context. KISS shows the current
cache rate beside the session cost, so you can see when a workload benefits.
Run `/cache-usage` to see the current session trend. Use `/cache-usage all` to
check whether cache efficiency improves across saved sessions, or
`/cache-usage <provider>` to compare one provider. Every chart uses the same
scale, so changes are easy to compare.
Use the same report in scripts and CI:
```
kiss cache-usage
kiss cache-usage --provider anthropic
kiss cache-usage --session <session-id-or-jsonl-file>
```
KISS also protects valuable prompt caches during long-running work when a
refresh is expected to save money. This is automatic. Set `cacheWarming` to
`off` to disable refreshes, or to `idle` to protect the cache while you decide
what to do next. Model-aware context management and bounded retry delays keep
long sessions responsive without routine tuning.
### Experimental Jev options
KISS also offers two opt-in [Jev](https://typesafe.ai/) features in `/settings`:
**Compaction method โ Jev** selects older tool interactions to keep, truncate,
or remove instead of using summary compaction. **Dynamic reasoning โ Jev**
selects reasoning effort for supported reasoning models instead of using a
fixed effort. Run `/login` and select **TypeSafe** to sign in. You can also
run `/login typesafe` directly or set `TYPESAFE_API_KEY`. Both features
send conversation context to Jev. The default settings remain summary
compaction and fixed reasoning effort.
[image](https://private-user-images.githubusercontent.com/322226193/657977821-3a3ce46e-3b70-49ce-ba7c-d02996a64630.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTAzODI1NDgsIm5iZiI6MTc5MDM4MjI0OCwicGF0aCI6Ii8zMjIyMjYxOTMvNjU3OTc3ODIxLTNhM2NlNDZlLTNiNzAtNDljZS1iYTdjLWQwMjk5NmE2NDYzMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwOTI2JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDkyNlQwMDI0MDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hYjg3ZDc5ZDYyNjkzYmU5Mjk1Y2E4NzgzNjA2NGM2NGZkMjQ4MTI2MzkwY2ZlYTI5MmU0ODcxMGMxZTZhOWNhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.TLm4EydiNmxGOeiV7Ub54HbtCcX-KcL7Z3LIIB-XDi8)
## Continue work from another agent
Run `/resume` to continue a KISS, Pi, Claude Code, or OpenAI Codex session.
The picker starts with sessions from the current working directory. Press
`Ctrl+G` to switch between project and global results.
If KISS fails, run `/bug` to open the GitHub issue form. In a headless
environment, KISS prints
`https://github.com/racetozero/kiss/issues/new` instead.
## Automate long tasks
### Loop and autoresearch
Use a loop for repeated work. With no limit, it runs until the goal is complete
or you stop it:
```
/loop make the parser tests pass
```
Put an interval before the goal to wait between turns. The first turn starts
immediately. Compound intervals support days, hours, minutes, seconds,
milliseconds, microseconds, and nanoseconds:
```
/loop 15m check the deployment and fix new errors
/loop 2d4h review dependency updates
```
Use `--iterations` for a fixed number of turns:
```
/loop make the parser tests pass --iterations 8
```
Autoresearch establishes a baseline, tests one small change at a time, keeps
improvements, and reverts regressions. It is also unlimited by default:
```
/autoresearch reduce Markdown render time and verify it with the existing benchmark
/autoresearch reduce Markdown render time and verify it with the existing benchmark --iterations 20
```
A loop interval and `--iterations` are mutually exclusive. Autoresearch does
not accept an interval. The maximum explicit iteration limit is 100.
Each job branches from the current conversation into a persistent KISS
session. Run `/jobs`, `/loop` without a goal, or `/autoresearch` without a goal
to manage jobs.
| Key | Action |
| --- | --- |
| Up or Down | Select a job or scroll its latest result |
| Enter or Right | Open the selected job |
| `p` | Pause or resume between iterations |
| `x` | Stop the selected job |
| Escape or Left | Return or close the view |
### Subagents
Subagents let one task branch into focused child sessions. Open `/settings`
and set `Subagents` to `on`. KISS then gives the main agent tools to start,
guide, wait for, and stop child agents.
Each child uses the same working directory. KISS allows four active child turns
and one child level. Project settings cannot enable subagents, and `--no-tools`
keeps them off.
### Dynamic workflows
A dynamic workflow coordinates many child agents with a short generated
script. The script holds the plan, while only final results return to the main
conversation. Enable subagents first, then use:
```
/workflow audit every tool file for missing path checks
use a workflow to compare the provider adapters
```
Run `/workflows` to inspect, pause, resume, stop, restart, or save a workflow.
A saved workflow becomes a reusable slash command after `/reload`.
One workflow can start up to 1,000 agents, with 16 active at once. Workflow
scripts cannot read files, use the network, load modules, or start processes.
Only their child agents use KISS tools.
## Models and integrations
### Diagnose installation and network access
Run a full health report before you use a provider, or when a corporate
firewall stops a connection:
```
kiss doctor
kiss doctor --summary
```
The full report shows each provider connection type, host, port, HTTP result,
and elapsed time. It lists separate SSE, WebSocket, AWS event-stream, and login
destinations. You can send the failed rows to a network team as a firewall
allowlist request. The summary report shows one row for each provider.
Any HTTP status means that the destination is reachable. For example, `401`
is normal when the probe does not send a credential. `SKIP` means that the
provider needs local configuration, such as an Azure resource name or a Google
Cloud location. The command does not send a prompt, use provider credentials,
or create model cost. It checks reachability, not credential validity.
### Login and model selection
KISS supports browser and headless OAuth, API keys, environment variables, and
cloud credentials. It can import compatible credentials from OpenAI Codex,
Claude Code, Pi, OpenCode, OpenClaw, and Hermes.
```
kiss login openai-codex
kiss login anthropic --device-auth
kiss login anthropic --api-key YOUR_KEY
kiss auth
kiss logout openai-codex
kiss --list-models
kiss --model sonnet:high
```
Use a Cursor subscription through KISS's native HTTP/2 provider:
```
kiss login cursor
kiss --model cursor/auto
```
KISS talks directly to Cursor's Agent service. It does not start Cursor's
`agent` command, Cursor desktop, Node.js, Bun, or a local proxy. You can also
set `CURSOR_ACCESS_TOKEN` instead of saving a login. When Cursor is selected,
KISS refreshes the model list for the signed-in account and keeps a built-in
fallback list if discovery is not available.
Use Databricks Unity Gateway with a workspace token and URL:
```
kiss login databricks-unity-gateway \
--api-key YOUR_TOKEN \
--base-url https://your-workspace.cloud.databricks.com
kiss --list-models databricks-unity-gateway
kiss --model databricks-unity-gateway/system.ai.claude-sonnet-4-6
```
Azure D