Gide CLI Documentation

~ % gide

Gide CLI

The same local agent behind the GIDE editor, in your terminal. Same server, same model, same conversation history. Install it with one command.

Overview

The Gide CLI is an agentic coding tool that reads your codebase, edits files and runs commands, driven by a model running on your own machine.

It is not a separate product from the GIDE editor. The CLI and the app talk to the same local server, load the same model, and share your account, folder trust and conversation history. You can start a task in the app and continue it in the terminal.

Get started

Install with a single command. Pick your platform below. The installer verifies a checksum before unpacking and puts gide on your PATH.

$ curl -fsSL https://generativeide.com/install.sh | sh

Not sure which Windows shell you are in? Your prompt shows PS C:\ in PowerShell and C:\ in cmd.

Then start Gide in any project. Replace your-project with a directory on your machine:

$ cd your-project
$ gide

On first run you will sign in, approve trust for the folder, and set up a model. That is it. Continue with the Quickstart.

What you can do

Build features and fix bugs

Describe what you want in plain language. Gide plans the approach, reads the files it needs, writes the code, and stops for your approval before anything touches disk.

$ gide "add pagination to the users endpoint and update the tests"

Work without sending your code anywhere

The model runs on your hardware. Your code, prompts and file contents stay on the machine, so there is no API bill, no per-token metering, and it works on a plane. Connect a cloud provider only when you explicitly want one.

Script it

Print mode runs one turn and exits with a meaningful code, so Gide composes with the rest of your shell.

$ gide -p "run the tests and fix any failures"
$ tail -200 app.log | gide -p "summarise the errors"
$ git diff main --name-only | gide -p "review these files for security issues"

Use it as a local OpenAI-compatible API

Point any OpenAI SDK at your own machine for raw model access, with none of the agent harness in the way. See Cloud and API.

The app and the CLI run side by side. The model answers one turn at a time, so if the app is mid-turn the CLI tells you it is busy rather than queueing silently.

Requirements

Three things gate a session. The server is not one of them, because the CLI starts one for you if none is running.

A Gide account

Every session needs a signed-in account with an active subscription, checked the same way the app checks it. A valid cached session keeps working offline, so you can keep coding without a connection.

$ gide login
$ gide auth status

Signing in on the website is only half the flow. On your dashboard you also need to click Login to GIDE App, which is what delivers the session to this machine.

Folder trust

Gide reads, edits and runs commands inside the folder you open, and nowhere else. The first run in a directory shows what it is about to trust and asks. Trust covers the whole subtree and is shared with the app.

$ gide trust
$ gide trust add
$ gide trust list

Sensitive locations such as your home directory or a filesystem root need the folder name typed to confirm, and are never granted automatically. A non-interactive run will not prompt; it exits so a script cannot silently gain access.

A model, set up on first run

You do not need a model in advance. The first interactive run offers to download the recommended one or connect a cloud provider with your own key.

Install details

Versions are installed side by side with a current link pointing at the active one, so an update can be rolled back.

  • Files land in ~/.gide/cli/versions/ on macOS and Linux, and under %USERPROFILE%\.gide\cli on Windows.
  • The command is ~/.local/bin/gide, or %LOCALAPPDATA%\gide\bin\gide.cmd on Windows.
  • Windows adds that directory to your PATH automatically. On macOS and Linux the installer prints the line to add if it is not already there.
  • Model weights are never part of the download. They arrive on first run.

The Windows download is around 800 MB against roughly 100 MB on macOS. Windows ships every GPU backend in one package, CUDA for NVIDIA, Vulkan for AMD and Intel, plus a CPU fallback, and bundles the CUDA runtime so you do not need the toolkit installed. macOS needs only a small Metal library.

Updating

The CLI checks for a new version once a day and mentions it in the banner. Updating is explicit.

$ gide update

Removing it

There is no uninstall command. Delete the shim and the install directory.

$ rm ~/.local/bin/gide && rm -rf ~/.gide/cli

Remove ~/.gide/cli, not ~/.gide. The parent directory also holds your downloaded models, API keys, trust grants and conversation history, all shared with the GIDE app.

Quickstart

Open a project and describe what you want. Gide explores the codebase, proposes edits, and stops for approval before writing anything or running any command.

  1. 1

    Open a project

    Run gide in any directory with code in it.

  2. 2

    Approve the folder

    Confirm that Gide may work in this directory. It is remembered, and shared with the app.

  3. 3

    Set up a model

    Download the recommended model, or connect your own API key. This happens once.

  4. 4

    Describe a task

    Type it in plain language. Gide reads what it needs and proposes changes.

  5. 5

    Approve the change

    Review the diff and accept or reject. Nothing is written until you decide.

Here are real recorded sessions, played back at their original pace:

gide (recorded session)
0s / 13s

Command reference

Global flags

-p, --print <task>Run one turn non-interactively and exit. Gates are rejected unless --allow-all is set.
--allow-all, --yoloAuto-accept file-write and command gates.
-c, --continueContinue the previous conversation in this directory.
-r, --resumePick any past conversation in this directory from a list.
--root <dir>Project root. Defaults to the current directory.
-v, --versionPrint the version and exit.
-h, --helpPrint usage and exit.

Commands

gideStart an interactive session in the current directory.
gide doctorCheck the local setup and report what is wrong.
gide server statusShow the running server and which clients are attached.
gide server start | stop | restartManage the shared local server.
gide server logs [-f]Tail the server log.
gide models [list]Installed models plus what is available to download.
gide models pull [id]Download a model. Resumable, so Ctrl-C pauses.
gide models select <family|file>Switch models, or attach any .gguf on your machine.
gide models profile [id]Inspect the detected behavior profile of an added model.
gide models rm <id>Detach a model, optionally deleting the weights.
gide login | logoutSign in, or remove the local session.
gide auth statusShow the signed-in account and plan.
gide trust [status|list|add|revoke]Manage which folders Gide may work in.
gide connect [provider]Use a cloud provider with your own API key.
gide disconnect [--forget]Return to the local model.
gide cloud [status|connect|disconnect]Private Cloud, a hosted model on Gide's key.
gide apikey [create|list|revoke]Manage keys for the local OpenAI-compatible API.
gide usage [day|week|month]Tokens and tools used, split by client and key.
gide hardwareGPU, VRAM, available backends and platform.
gide updateSelf-update a standalone install.

Exit codes

Print mode is meant to be scripted, so failures are distinguishable rather than all being 1.

0Success.
1An error occurred, or a check failed.
2The turn threw an unexpected error.
3The model is busy. Another client holds it.
4Blocked on approvals. A gate was rejected in a non-interactive run.
5Authentication required.
6The folder is not trusted.
130Interrupted with Ctrl-C.
143Terminated.

Slash commands

Inside a session, type / to open the command menu with autocomplete. There are thirteen commands. Several also take arguments, so you can skip the interactive picker when you already know what you want.

Session

/helpEvery command and keyboard shortcut, printed into the session.
/clearStart a fresh conversation. Clears the screen and begins a new session id, so earlier turns are no longer context.
/statusYour account, the active model, the server address, the session id and the working directory.
/exitQuit. Typing exit or quit without a slash does the same thing.

Models

/modelOpen the model picker. Arrow keys choose, enter switches. On a model you do not have yet, enter opens a file picker so you can attach your own .gguf.
/model pull [id]Download a model without leaving the session. Resumable, so Ctrl-C pauses rather than losing progress.
/model <family> [file.gguf]Switch directly to a model by name, or attach a specific file, skipping the picker.
/temperatureOpen the temperature scale. Arrow keys adjust, enter applies. Takes effect from your next message.
/temperature <value|reset>Set it directly, or return it to the recommended value for this model.
/layersOpen the GPU-layers scale. Applying reloads the model in place, which takes a moment.
/layers <value|reset>Set the layer count directly, or restore the recommended one.
/hardwareGPU, VRAM, which backends are available, and the platform.

Account and providers

/loginSign in to your Gide account. Opens the browser and waits for you to connect this machine.
/cloudConnect a cloud provider using your own API key. Pick the provider, paste the key into a masked box, and it is validated before being saved.
/connect [provider]The same flow, addressed by provider name so you skip the picker.
/privateGide Private Cloud, a hosted model on our key. Connects when off, and offers to disconnect when already on. Enterprise plans only.

Usage

/usageTokens spent over the last week, broken down by client and by API key.
/usage dayJust today.
/usage monthThe last thirty days.

Anything that is not a recognised command is sent to the model as a normal message, so a stray slash will not silently do nothing. Unknown commands are named back to you with a pointer to /help.

Interactive session

Approving changes

Nothing is written and no command runs until you say so. A write gate shows the exact diff; a command gate shows the command and where it would run. Try it:

Update(src/cart.js)added 1 line, removed 1 line
export function cartTotal(cart) {
- return cart.reduce((sum, i) => sum + i.price, 0);
+ return cart.reduce((sum, i) => sum + i.price * i.qty, 0);
}
Allow write to src/cart.js?esc rejects · nothing is written until you decide

Allowing all lifts the gate for the rest of the session only. Pressing escape always rejects.

Keyboard

enterSend.
\ + enter, or ctrl+jInsert a newline.
@Mention a project file. Tab or enter inserts, escape dismisses.
escapeClear the input, or interrupt a running turn.
up / downPrompt history, move between lines, choose in menus.
ctrl+rSearch prompt history.
ctrl+cClear the input. Press twice to quit.
ctrl+lRedraw the screen.
ctrl+a / ctrl+eJump to start or end of line.
ctrl+u / ctrl+kDelete to start or end of line.
ctrl+wDelete the previous word.

The @ picker walks your project honouring its own .gitignore, and ranks matches by filename before path. While a turn is running you can keep typing. Enter queues the prompt and it sends when the turn finishes.

Escape asks the server to stop generating rather than just closing the connection. That difference matters, because a dropped connection with a write gate open counts as approval on the server side.

Resuming work

$ gide --continue
$ gide --resume

History is stored per project and written by whichever client ran the turn, so a conversation started in the app can be resumed in the terminal.

Models

Models are shared with the app and stored once in ~/.gide/models. Downloads are resumable and checksum verified.

$ gide models
$ gide models pull
$ gide models select qwen

Using your own GGUF

Any GGUF file works. Point Gide at one and the server reads the file's own metadata, its architecture, chat template and tool-call format, to derive a behavior profile. The model does not have to be one Gide already knows about.

$ gide models select ~/models/my-model.gguf
$ gide models profile

The profile is written to a JSON file you can edit if a guess is wrong. Inside a session, /model offers the same thing through a file picker.

Tuning

/temperature and /layers open interactive scales. Temperature applies from the next message, while changing GPU layers reloads the model in place. Run gide hardware to see what your machine supports.

Cloud and API

Bring your own key

If you would rather use a frontier model for a task, connect a provider with your own key. Prompts then go to that provider instead of staying local, and the CLI says so when you connect.

$ gide connect anthropic
$ gide disconnect

On macOS the key is stored in your Keychain. On Windows and Linux there is no OS keystore integration yet, so it is written to a permission-restricted file at ~/.gide/online_keys.json.

OpenAI-compatible API

The local server exposes an OpenAI-compatible endpoint, so any tool or SDK that speaks that protocol can use your local model. This is raw model access with your system prompt and your message history, and none of Gide's agent harness or memory.

$ gide apikey create my-tool

The key is shown once and stored only as a hash. Revoking takes effect immediately.

gide
$ gide --resume
Resume a conversation
❯ 1. fix the failing test in src/cart.test.js · 2m ago
2. explain this repo briefly · 1h ago
3. extract the discount logic into discount.js · 1d ago
↑↓ + ⏎ · esc starts fresh
$ gide -p "run the tests" # scriptable: exit codes, plain output
Same server, same model, same conversation history as the IDE. Approve every edit from your terminal.

Streaming is supported, and reasoning models split their thinking into a separate field. Tool calling, multiple completions, response formats and logprobs are not supported, and each returns a clear error rather than failing oddly. A busy model returns 429 with a retry header, and the endpoint is disabled while Private Cloud is connected. Usage is metered per key and appears in gide usage.

Private Cloud

Enterprise plans can run against a hosted model on Gide's key, for machines that cannot run one locally.

Configuration

Environment variables

GIDE_PLAIN=1Force the plain line-mode REPL instead of the full interface.
GIDE_THEME=lightPalette for light terminals.
NO_COLOR=1Disable all styling.
FORCE_COLOR=1Keep colors even when output is piped.
GIDE_TRUST_ROOTSFolders trusted for this process only, for CI and containers.
GIDE_KEY_STORE=fileUse the file key store instead of the macOS Keychain.
GIDE_LOGIN_URLOverride the login page.
GIDE_INSTALL_DIROverride where the CLI is installed.

Files

Everything lives under ~/.gide and is shared with the app.

models/Downloaded model weights.
model.jsonWhich model or provider is selected.
trust.jsonFolders you have trusted.
session.jsonYour signed-in account session, encrypted.
api_keys.jsonHashes of your API keys, never the keys themselves.
logs/Server logs.
cli/The installed CLI, sessions and prompt history.
<project>/.gide/history/Per-project transcripts. Self-ignoring, so never committed.

Troubleshooting

Start here. It checks every part of the local setup and names what is wrong.

$ gide doctor
model busyThe app is mid-turn, since the model answers one at a time. Wait, or run gide server restart --force in another terminal.
Authentication requiredRun gide login, and remember the dashboard button that connects this machine.
Folder not trustedRun gide trust add here, or set GIDE_TRUST_ROOTS for a one-off run.
no Gide server foundNo server bundle was found in the repo, the standalone install, or an installed app. Reinstall the CLI, or launch the app once.
Gide update requiredThe CLI is newer than the running server. Update the app, or run gide update.
No colors or boxesGit Bash and mintty report their input as a pipe, so the plain interface is used. Run in Windows Terminal for the full one.
Something crashedRun gide server logs -f to watch the server side as it happens.

Need more help?

The editor has its own documentation.