← back to LuisForge
LuisForge CLI

forge — the LuisForge command-line client

A single-file Python script, standard library only, no dependencies to install. Talks to the same API the website and mobile app use.

Install

Run this on Linux or macOS:

curl -fsSL https://luisforge.pages.dev/install.sh | bash

Installs to ~/.local/bin/forge and adds that directory to your PATH in .zshrc/.bashrc/.profile depending on your shell. Don't run it with sudo — it installs per-user, and root would put it in the wrong home directory entirely (see the installer's own warning if you try). Prefer to read it first? The script is at /install.sh, and the CLI source itself is at /forge.py.

Windows?

No. install.sh is a bash script (shell detection, ~/.local/bin, appending to .zshrc/.bashrc) and doesn't run on Windows outside of WSL. There's no install.ps1 or native Windows installer — if you're on WSL, just follow the Linux instructions above inside it.

Commands

CommandWhat it does
forge auth signup / login / logout / whoamiAccount management
forge clone <owner/repo> [dest]Clone a repo (works around the HTTP smart-protocol limitation — see docs)
forge reposList repos you can see
forge create <name> [--private] [--desc "..."]Create a repo
forge delete <owner/repo>Delete a repo you own
forge push <owner/repo> <local_file> [remote_path]Upload a single file as a commit
forge files <owner/repo> [path]List a repo's files
forge cat <owner/repo> <path>Print a file's contents
forge log <owner/repo>Show commit history
forge issues list / createIssue tracker
forge run <owner/repo> "<cmd>" [--image alpine]One-shot command in a container
forge cmd <owner/repo> "<cmd>" [--image alpine] [--port N]Host a long-running server publicly via bore
forge cmd stop <owner/repo> <run_id>Stop a hosted server
forge 2fa setup / verify / disableTOTP 2FA management
forge ssh-key add / list / rmManage SSH public keys for real git clone/push
forge updateCheck for and install a newer version of forge itself
forge update --forceRe-download and reinstall regardless of whether a change is detected
forge uninstall [--yes]Remove ~/.forge (config + saved token), strip the PATH line the installer added, then delete forge (and codey, if installed)

codey — LuisCodey from the terminal

codey is a separate, standalone command (installed alongside forge by the same installer) for chatting with LuisCodey — the AI coding assistant — without leaving the terminal. It shares forge's login session (~/.forge/config.json), so no separate sign-in needed. By default it opens a full-screen TUI (built on Python's stdlib curses — no extra deps), with a centered logo/input box on an idle screen that transitions into a scrolling chat log once you start talking, similar in spirit to tools like OpenCode. Pass --plain for a plain-text REPL instead (useful over dumb pipes, logs, or terminals that don't support curses).

codey

Run it with no arguments to pick a repo from a full-screen, filterable list (type to filter, ↑/↓ to move, Enter to select) — or skip the picker with codey owner/repo to jump straight into chatting about a specific one.

Key / commandWhat it does
(just type, then Enter)Send a message to LuisCodey — it knows the repo's current file list
/save [n]Commit the n-th code block from the last reply (or the first, if omitted) straight into the repo, using the filename Codey specified
/clearReset conversation history — starts a fresh context
Esc / Ctrl+CQuit

Requires AI to be turned on for that repo (Settings tab / per-repo toggle) — same requirement as the web and mobile LuisCodey chat. Source: /codey.py.

Keeping forge up to date

forge update downloads the latest forge.py from https://update.luisforge.pages.dev/forge.py — a separate Cloudflare Pages branch alias dedicated to serving update checks, kept stable and independent of both the main site's deploys and the backend's cloudflared tunnel URL (which isn't stable across restarts) — and compares its SHA-256 against the copy you have installed.

Both commands overwrite the script in place at whatever path it's actually running from (typically ~/.local/bin/forge) and keep it executable — no need to re-run the installer.

Config & credentials. forge stores its API base URL and your saved auth token at ~/.forge/config.json, created with 0600 permissions (owner read/write only) since it holds a live session token.

See also: full docs for how the backend, Cmd/Server tabs, and everything else forge talks to actually works.