Getting Started
Install Gajae-Code, launch the gjc binary, authenticate a provider, and run the deep-interview → ralplan → ultragoal loop.
Get the gjc binary running, sign in to a model provider, and drive your first loop.
Prerequisites
- Bun installed and available as
bun. - A Git repository for the project you want
gjcto work on. tmuxif you want the recommendedgjc --tmuxexperience.- At least one reachable model provider.
For OS and shell notes, see Recommended Environment.
Install
Gajae-Code is published through the npm registry as gajae-code. Use Bun for the recommended runtime workflow:
bun install -g gajae-codeThis installs the gjc binary. The scoped package is also available as @gajae-code/coding-agent.
Launch
Start the recommended tmux-backed experience:
gjc --tmuxBare gjc launches directly without creating or attaching a tmux session:
gjcRun inside an isolated Git worktree when you want a safer, branch-local workspace. --worktree takes an optional branch-like name and creates a GJC-managed sibling worktree; it is not a filesystem path:
gjc --tmux --worktree my-task-branchIf you already created a worktree directory, launch from that directory instead:
cd ../my-task-worktree && gjc --tmuxAuthenticate a provider
Gajae-Code routes through model providers, so at least one must be reachable before you can pick a model.
API-key environment variables are the simplest path. Export the key for the provider you want and gjc resolves it automatically:
| Variable | Provider |
|---|---|
ANTHROPIC_API_KEY | Anthropic |
OPENAI_API_KEY | OpenAI |
GEMINI_API_KEY | Google Gemini |
OPENROUTER_API_KEY | OpenRouter |
ZAI_API_KEY | z.ai |
MINIMAX_CODE_API_KEY | MiniMax Code |
See Environment variables for the full list.
Register a custom provider with a preset, which writes a models.yml entry referencing a documented env var name (it does not store the secret):
gjc setup provider --preset minimax
gjc setup provider --preset minimax-cn
gjc setup provider --preset glmThe same presets are available inside the TUI:
/provider add --preset glm
/provider add zaiOAuth providers sign in through your browser instead of an env var. Anthropic, OpenAI Code, Google (Gemini CLI / Antigravity), and GitLab Duo each have a built-in browser callback port; the resulting OAuth credentials are stored locally in agent.db.
When gjc resolves a key for a provider, it uses this order:
- CLI
--api-key - Stored API key (
agent.db) - Stored OAuth credential (
agent.db) - Environment variable
models.ymlapiKey
Then pick a model with /model in the TUI, or --model / --models on the CLI. For details, see Models and credentials.
Advanced: to move OAuth refresh tokens off your laptop onto a shared host, see
gjc auth-brokerin Models and credentials.
Pass an image
At startup, prefix a local path with @:
gjc @screenshot.png "What should I change?"Inside the TUI, copy an image to the system clipboard and use Paste image from clipboard (Ctrl+V on Linux/macOS, Alt+V on Windows), or type #paste-image and choose the prompt action. If clipboard access is unavailable, paste or pass the image file path as @path/to/image.png.
Run the loop
Gajae-Code focuses on one useful loop:
deep-interview -> ralplan -> ultragoal
└─ optional team execution when parallel tmux workers helpdeep-interview— clarify intent, affected behavior, non-goals, and acceptance checks.ralplan— build and critique the plan before any mutation.ultragoal— carry the work through implementation, revision, verification, and an evidence summary.
Add team only when coordinated parallel tmux workers help. team requires running inside a tmux session ($TMUX set) — launch the gjc CLI from a shell first, e.g. gjc --tmux. A concrete bug-fix pass might look like:
/skill:deep-interview clarify the bug, affected behavior, non-goals, and acceptance checks
/skill:ralplan turn the clarified bug report into a reviewed fix plan
gjc ultragoal create-goals --brief-file <approved-plan>
# Optional only for parallel work:
gjc team 2:executor "split implementation and verification for this bug fix"
gjc ultragoal complete-goalsTry research mode
Use rlm when the job is exploratory research rather than direct code mutation:
gjc rlmIt opens a notebook-style research/REPL loop backed by a persistent Python kernel and a hard-gated toolset: python, read, web_search, search_tool_bm25, read-only bash, goal, and complete_research. The run writes notebook.ipynb, report.md, metadata, and agent-session artifacts under .gjc/_session-<gjcSessionId>/rlm/<rlmSessionId>/.
Next steps
Recommended Environment
Check the local setup before installing.
Commands
deep-interview, ralplan, rlm, team, and ultragoal.
Core Concepts
The working loop, sessions, model routing, and durable verification.
FAQ
Short answers for setup and first use.
- Source project and full reference: Yeachan-Heo/gajae-code
- Community: Discord