MCPcopy Index your code
hub / github.com/Yeachan-Heo/gajae-code

github.com/Yeachan-Heo/gajae-code @v0.8.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.2 ↗ · + Follow
30,694 symbols 122,405 edges 2,995 files 3,578 documented · 12% updated todayv0.9.0 · 2026-07-07★ 1,6732 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Gajae-Code vertical logo

Gajae-Code autonomous coding-agent hero illustration

Gajae-Code

Encode intention. Decode software.

A focused coding-agent runner for interviews, reviewed plans, tmux-native execution, and durable verification.

Website npm package MIT license Discord

Gajae-Code character mascot

Gajae-Code is an experimental, beta-stage project. Expect rough edges and verify outputs before relying on it for important work.

Recent highlights

Gajae Code mobile answers for coding agents hero illustration

Mobile answers for coding agents — Gajae-Code now ships a configure-once notifications SDK and managed Telegram reference daemon. Each session exposes a loopback WebSocket discovery file and a generic action_needed/reply protocol so Telegram, Discord, Slack, mobile apps, or local tools can surface pending asks and route answers back without terminal scraping.

The bundled Telegram flow adds a threaded per-session surface with context updates, live/finalized output, image attachments, inline buttons, free-text replies, typing indicators, and double-check acknowledgements. gjc daemon keeps one safe long-poll owner per bot token so new sessions attach cleanly instead of tripping Telegram 409 conflicts.

Research and desktop-control highlights

rlm research/REPL mode — Research. Experiment. Iterate.

rlm — an opt-in research/REPL mode. A Jupyter-notebook-style research session over the agent loop, backed by the shared persistent Python kernel with a hard-gated python + read + web_search toolset. Runs aggregate into .gjc/rlm/<session>/notebook.ipynb and synthesize a report.md on exit. Start it with gjc rlm.

computer-use desktop control — See. Click. Type. Control.

computer-use — an experimental, opt-in desktop-control tool surface. Backed by native screenshot/input bindings and gated through settings/tool registration, it lets the agent see the screen and drive mouse/keyboard for local desktop coordination.

Website

Visit gajae-code.com for the Gajae Code landing page, quick-start guide, architecture overview, harness notes, bridge/RPC docs, skills, receipts, remote-control design, and troubleshooting.

What is Gajae-Code?

Gajae-Code (gjc) is an external coding-agent harness. It runs from the repository or worktree you choose, then gives the agent a small, explicit workflow surface:

deep-interview -> ralplan -> ultragoal
                         └─ optional team execution when parallel tmux workers help

Gajae-Code mascot guiding the deep-interview to ralplan to ultragoal workflow loop

It is intentionally not a hidden plugin for Codex CLI, Claude Code, OpenCode, or Claw Code. Start gjc beside those tools when you want structured planning, persistent evidence, tmux-backed workers, or an isolated worktree.

Install

bun install -g gajae-code

The scoped package is also available as @gajae-code/coding-agent.

Shell completion

GJC can generate a Fig/withfig-compatible spec for Microsoft inshellisense:

gjc completion inshellisense --install

The installer writes gjc.js plus a minimal index.js into inshellisense's default local spec directory (~/.fig/autocomplete/build). If that directory already has an unrelated index.js, GJC refuses to clobber it unless --force is explicit; use --dir <path> for a separate GJC-only spec directory.

Supported platforms

Prebuilt standalone release binaries are published only for:

  • Linux — x64 and arm64
  • Windows — x64
  • macOS — Apple Silicon (arm64) and Intel (x64)

The npm/Bun package path and build-from-source also remain available on every platform.

macOS Intel install

Standalone release binaries are published for both Apple Silicon (gjc-darwin-arm64) and Intel (gjc-darwin-x64) macOS. You can also install through the npm/Bun package path or build from source:

bun install -g gajae-code
# or
curl -fsSL https://raw.githubusercontent.com/Yeachan-Heo/gajae-code/main/scripts/install.sh | sh -s -- --source

Windows (native install)

On a clean Windows 11 machine, install Bun first, then install gjc with Bun's global installer:

# 1. Install Bun
powershell -c "irm bun.sh/install.ps1|iex"

# 2. Restart the terminal so PATH and the Bun runtime refresh, then confirm Bun
bun --version

# 3. Install and verify gjc
bun install -g gajae-code
gjc --version
gjc --smoke-test

bun install -g places the gjc launcher in %USERPROFILE%\.bun\bin. That directory must be on PATH for gjc to resolve as a command. Bun's installer adds it automatically, but the change only applies to terminals started after installation — restart PowerShell (or sign out/in) if gjc is "not recognized".

Troubleshooting:

  • gjc reports an old Bun runtime. Re-run the Bun installer above, restart the terminal, and confirm bun --version matches what gjc --version expects. If an older Bun still wins, make sure %USERPROFILE%\.bun\bin is first on PATH and remove any stale Bun installs shadowing it.
  • gjc.exe exists but gjc is "not recognized". The launcher is installed but not on PATH. Confirm %USERPROFILE%\.bun\bin is listed in echo $env:Path, then restart the terminal.
  • gjc --tmux starts without a tmux-backed session. Native Windows needs a tmux-compatible executable on PATH. For GJC-managed session/team guarantees, use WSL with real tmux, or another provider that round-trips tmux user options such as @gjc-profile. Native psmux can provide tmux/pmux/psmux commands, but that path is not fully supported for GJC ownership tags and team guarantees yet; see docs/environment-variables.md#interactive---tmux-startup-and-scrollmouse-profile.

Quick start

# Run directly in the current checkout
gjc

# Use a tmux-backed leader session
gjc --tmux

# Use an isolated worktree for risky or reviewable work
# --worktree takes an optional branch-like name, not a filesystem path.
gjc --tmux --worktree my-task-branch

# If you already created a worktree directory, launch from that directory instead.
cd ../my-task-worktree && gjc --tmux

Image input

GJC accepts images in two ways:

  • CLI startup: prefix a local image path with @, for example gjc @screenshot.png "What should I change?".
  • Interactive TUI: copy an image to the system clipboard and use the configured Paste image from clipboard key (Ctrl+V on Linux/macOS, Alt+V on Windows), or type #paste-image and choose the prompt action. When the clipboard is unavailable, paste or pass the image file path with @path/to/image.png instead.

Type # in the interactive editor to open prompt actions. In a tmux-backed session, choose Scroll to previous user input (for example via #prev) to enter tmux copy-mode at the previous rendered user message.

Inside a GJC session, use the public workflow surface:

/skill:deep-interview clarify ambiguous requirements
/skill:ralplan build and critique the implementation plan
gjc ultragoal create-goals --brief-file <approved-plan>
gjc ultragoal complete-goals

Add gjc team ... only when coordinated tmux workers materially help.

Core capabilities

  • Interview before guessing: deep-interview turns vague requests into concrete requirements.
  • Plan before mutation: ralplan reviews the approach before code changes.
  • Execute with evidence: ultragoal tracks goals, revisions, checks, and completion evidence.
  • Parallelize when useful: team coordinates tmux-backed workers for larger tasks.
  • Stay external and reviewable: run from a chosen repo or worktree without patching another agent runtime.

Workflow surface

Gajae-Code ships four default workflow skills:

Skill What it does
deep-interview Clarifies ambiguous requirements before planning or code changes.
ralplan Builds and critiques an implementation plan before mutation.
ultragoal Tracks goals through execution, revision, verification, and evidence.
team Coordinates tmux-backed workers when parallel execution is worth it.

And four bundled role agents:

Agent What it does
executor Bounded implementation, fixes, and refactors.
architect Read-only architecture and code-review assessment.
planner Read-only sequencing and acceptance criteria.
critic Read-only plan critique and actionability review.

No sprawling default skill zoo: GJC improves by making this small method better.

Skill migration and bundled skill inspection

When moving a workflow into GJC, inspect the bundled defaults before installing or overwriting anything:

gjc skills list
gjc skills read ralplan
gjc setup defaults --check

gjc setup defaults installs the four bundled GJC workflow skills into your user .gjc directory and preserves existing local files by default. If --check reports missing or different files, compare the embedded copy with gjc skills read <name> first; use gjc setup defaults --force only when you intentionally want to replace local default workflow skill files.

Works beside your existing agent or bot

Tool or bot Recommended GJC command Boundary
Codex CLI gjc --tmux --worktree <name> or gjc --worktree names a GJC-managed sibling worktree; for an existing path, cd there first.
Claude Code gjc --tmux or gjc --tmux --worktree <name> GJC does not become a Claude Code extension.
OpenCode gjc or gjc --tmux External-runner workflow only today.
Claw Code gjc --tmux --worktree <name> GJC does not install into or replace Claw Code.
External controller / bot gjc --mode rpc for a subprocess worker, or Bridge/HTTPS surfaces where configured External controllers drive GJC through generic RPC/bridge contracts, not scrollback scraping.

For evaluating Aside as an opt-in search/context retrieval sidecar, see docs/aside-integration.md. For generic third-party bot setup and provider-independent smokes, see docs/bot-integration.md. For the readiness classification across RPC, ACP, and Bridge/HTTPS surfaces, see docs/external-control-readiness.md. For lower-level protocol details, see docs/rpc.md and docs/bridge.md.

Configuration

Provider retry budgets live in ~/.gjc/config.yml:

retry:
  requestMaxRetries: 4
  streamMaxRetries: 100
  maxRetries: 3
  maxDelayMs: 300000

requestMaxRetries applies before a stream is established. streamMaxRetries applies only to replay-safe transient stream failures. Invalid auth, unsupported models/providers, malformed requests, context overflow, user aborts, and permanent quota failures remain fail-fast.

Good to read together

  • GJC multivendor setup guide — a community guide for role-based provider/profile selection across Anthropic, OpenAI/Codex, Google/Gemini, xAI/Grok, and opencode-go. Treat its presets as user-level configuration guidance rather than bundled defaults; verify model availability and provider auth in your own environment before adopting them.

TUI identity

The default dark TUI identity is the GJC red-claw theme, while light-appearance terminals default to the bundled blue-crab theme. Three additional bundled migration themes — claude-code, codex, and opencode — mirror the look of those tools for easy eye-migration and are selectable from Settings or /theme. Explicit user theme settings still win.

Bundled theme grid

Pick from Settings (Appearance -> Dark theme / Light theme) or /theme.

Theme Visual feel Best fit
red-claw Dark GJC default with warm red-claw accents and strong status contrast. Native GJC identity for dark terminals.
blue-crab Bright-terminal blue palette tuned for readable light slots. Light terminal or OS appearance.
claude-code Claude Code-inspired dark palette with terracotta and pink highlights. Claude Code muscle memory without leaving GJC.
codex Crisp dark blue-gray palette with sharper coding-session contrast. A Codex-like dark workspace.
opencode OpenC

Extension points exported contracts — how you extend this code

InputHandler (Interface)
Component with handleInput method [46 implementers]
packages/coding-agent/src/modes/components/plugin-settings.ts
Command (Interface)
Trait implemented by built-in shell commands. [54 implementers]
crates/brush-core-vendored/src/builtins.rs
GoldenFixture (Interface)
(no doc) [48 implementers]
packages/tui/test/render-goldens.ts
ProviderSessionState (Interface)
(no doc) [28 implementers]
packages/ai/src/types.ts
IsolationBackend (Interface)
(no doc) [8 implementers]
crates/pi-iso/src/lib.rs
EventSink (Interface)
Sink for low-level input events. The real implementation posts `CGEvent`s; the test implementation records them. [3 implementers]
crates/pi-natives/src/computer/input.rs
BenchmarkClient (Interface)
Common interface for both RPC and in-process clients [1 implementers]
packages/typescript-edit-benchmark/src/runner.ts
ShellBuilderExt (Interface)
Extension trait that simplifies adding default builtins to a shell builder. [1 implementers]
crates/brush-builtins-vendored/src/builder.rs

Core symbols most depended-on inside this repo

join
called by 7655
packages/utils/src/temp.ts
push
called by 5375
packages/coding-agent/src/session/history-storage.ts
map
called by 3438
packages/ai/src/model-manager.ts
trim
called by 2465
packages/utils/src/ptree.ts
includes
called by 1894
crates/brush-core-vendored/src/history.rs
filter
called by 1868
python/robogjc/src/logging_config.py
fg
called by 1770
packages/coding-agent/src/modes/theme/theme.ts
now
called by 1633
packages/coding-agent/src/goals/runtime.ts

Shape

Function 17,288
Method 7,857
Interface 3,516
Class 1,830
Enum 170
Route 33

Languages

TypeScript81%
Rust12%
Python7%

Modules by API surface

packages/coding-agent/src/session/agent-session.ts453 symbols
packages/coding-agent/src/session/session-manager.ts269 symbols
packages/coding-agent/src/gjc-runtime/team-runtime.ts259 symbols
packages/ai/src/auth-storage.ts219 symbols
packages/coding-agent/src/modes/interactive-mode.ts199 symbols
packages/coding-agent/src/gjc-runtime/ultragoal-runtime.ts199 symbols
packages/coding-agent/src/tools/gh.ts191 symbols
python/gjc-rpc/src/gjc_rpc/client.py160 symbols
packages/coding-agent/src/config/model-registry.ts138 symbols
python/gjc-rpc/src/gjc_rpc/protocol.py134 symbols
packages/ai/src/providers/openai-codex-responses.ts134 symbols
packages/tui/src/components/editor.ts131 symbols

For agents

$ claude mcp add gajae-code \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact