scay

a small
coding agent
for your terminal

One tiny Go binary that reads, writes, greps, edits and runs commands in your project, driven by the model you choose — OpenAI, Anthropic, Google Gemini, or a local model via Ollama.

Small, lightweight, fast, readable. The opposite of an IDE-in-a-terminal.

$ curl -fsSL https://raw.githubusercontent.com/robitec97/scay/main/scripts/install.sh | sh

macOS and Linux. On Go 1.25+: go install github.com/robitec97/scay@latest

A session, in full it will stop and ask you something

~/src/scay

The gate

Looking is free.
Changing asks.

The model works with six built-in tools. Anything that only reads runs immediately. Anything that changes your machine stops and waits for a y.

Write approvals show you the content for a new file, or a diff for an overwrite. Prompts resolve symlinks and flag targets outside the working directory. Files must be read before they can be edited.

readRead a fileruns
listList a directoryruns
grepSearch the projectruns
editChange a file in placeasks
writeCreate or overwrite a fileasks
bashRun a commandasks
MCP toolsAnything you plug inasks

Ctrl-C interrupts the current turn — it aborts the model call or the running tool without killing your session. If you want the gate out of the way entirely, scay yolo auto-approves everything. Use it with care.

Providers

Four backends,
talked to directly.

Every adapter is plain net/http against the provider's own API — no vendor SDKs to compile. Responses stream on all four, and transient failures retry automatically with backoff.

Environment variables override the config file, so CI and one-off shells work without touching your saved setup. Credentials are stored with 0600 permissions under ~/.config/scay.

Anthropic

ANTHROPIC_API_KEY

OpenAI

OPENAI_API_KEY, or an experimental ChatGPT subscription login via /auth openai

Google Gemini

GEMINI_API_KEY or GOOGLE_API_KEY

Ollama — local

No key. Just ollama serve. /model lists the models you actually have installed.

The ChatGPT route relies on the Codex protocol and is explicitly experimental.

Inside the session

Everything is a
slash command.

There is no configuration file to learn first. Run scay, and it walks you through /auth and /model right there. Settings are remembered, so next time you just type.

Outside the session, the whole surface is four words:

scay          # the interactive session
scay yolo     # same, every action auto-approved
scay update   # self-update to the latest release
scay version  # print the version
/modelPick provider, model and thinking effort — applies live
/authAuthenticate; takes a provider name to skip the menu
/mcpManage MCP servers: add, list, remove, get, tools
/compactSquash a long history into a summary, freeing context
/clearStart the conversation over
/helpThis list, in your terminal
/exitQuit — Ctrl-D works too

MCP · optional

Bring your own tools.

scay is an MCP client. Plug in external tool servers over stdio or streamable HTTP and the model uses them like built-ins — behind the same approval gate.

Servers live in your global config, or in a per-project .mcp.json you can commit and share with the repo.

/mcp add fs -- npx -y @modelcontextprotocol/server-filesystem .
/mcp tools        # connect and list what the model will see
/mcp add --project fs -- …       # shared via .mcp.json

Tools are namespaced mcp__server__tool. A server that fails to start degrades to a warning instead of taking the session down with it.

Where it stands

Early development.

v0.2.0 is tagged and published. The install script and scay update are verified end to end, including checksum verification before the binary is swapped. Live checks against the cloud providers are still in progress.

Read next

ROADMAP.md — what works today, what's next

Architecture

docs/OVERVIEW.md — the design and the reasoning behind it

Requirements

macOS or Linux. Go 1.25+ to build from source.

License

MIT