neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
CodeAgent Mobile: 장시간 실행 AI 코딩 에이전트 감독 레이어
The supervision layer for AI coding agents that run for hours. Start from a Jira, Linear, or Azure DevOps ticket and the session assembles itself — then approve diffs, redirect prompts, and keep long
개발 도구TypeScript · KotlinGitHub @edgar-durand온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Public source for CodeAgent Mobile clients: codeam-cli (npm), VS Code / Cursor / Windsurf extension, and JetBrains plugin. Control AI coding agents (Claude Code, Copilot, Cursor) from your phone.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Public source for the client-side bridges of CodeAgent Mobile — the workflow-continuity layer for AI coding agents.
• apps/cli — codeam-cli, the terminal bridge that wraps Claude Code in a PTY and streams it to any device
• apps/vsc-plugin — extension for VS Code, Cursor, and Windsurf
• apps/jetbrains-plugin — plugin for the IntelliJ family (IntelliJ IDEA, WebStorm, PyCharm, Rider, GoLand, …)README 전문 보기 ↗Public source for the client-side bridges of CodeAgent Mobile — the workflow-continuity layer for AI coding agents.
apps/cli — codeam-cli, the terminal bridge that wraps Claude Code in a PTY and streams it to any deviceapps/vsc-plugin — extension for VS Code, Cursor, and Windsurfapps/jetbrains-plugin — plugin for the IntelliJ family (IntelliJ IDEA, WebStorm, PyCharm, Rider, GoLand, …)What is CodeAgent Mobile? The supervision layer for agents already running in your IDE. Now that AI agents run for hours, not seconds, you no longer need to stare at a terminal — CodeAgent streams the session to your phone or web dashboard so you can approve diffs, redirect prompts, and stay in the loop async. Works with Claude Code, Copilot, Cursor, Windsurf, JetBrains AI, OpenAI Codex, Vertex AI, and any agent in your editor.
Install once in your IDE, pair with a QR, your workflow follows you across devices. See codeagent-mobile.com.
codeam-clinpm install -g codeam-cli
codeam pair # generates a 6-character code
codeam # starts Claude Code with mobile control
Every client (CLI + both plugins) reads the same two env vars to pick which API host it talks to. Priority order — first match wins:
| Variable | Effect |
|---|---|
CODEAM_API_URL | Full URL override. Use when pointing at a custom staging endpoint or a self-hosted instance. Example: CODEAM_API_URL=https://staging-api.example.com codeam pair. |
CODEAM_TEST_MODE=1 | Shortcut that routes every request at the dev preview (https://dev-api.codeagent-mobile.com) without you having to know the URL. Use this when pairing from dev.codeagent-mobile.com. |
| (none) | Defaults to production (https://api.codeagent-mobile.com). |
The shortcut exists because prod + dev share Redis: a code generated against prod-api is also valid against dev-api, so a pair started in the dev webapp completes silently against prod (heartbeats keep going to the wrong host). CODEAM_TEST_MODE=1 flips every endpoint — pairing, command relay, SSE, chunk uploads, file watcher, history — in lockstep.
# Quick check it's active:
CODEAM_TEST_MODE=1 codeam doctor
# api https://dev-api.codeagent-mobile.com
# mode TEST_MODE — using dev preview
VS Code / JetBrains plugins read the same env vars from the host process — set them in your shell before launching the IDE. The apiBaseUrl setting in each plugin still works as a manual override (highest priority of all in the plugin context).
codeagent-mobile-clients/
├── apps/
│ ├── cli/ # codeam-cli (TypeScript · tsup · Node ≥ 18)
│ ├── vsc-plugin/ # VS Code extension (TypeScript · esbuild)
│ └── jetbrains-plugin/ # IntelliJ plugin (Kotlin · Gradle · JDK 17)
├── packages/
│ └── shared/ # @codeam/shared — chrome parser +
│ # model pricing tables, bundled into CLI
│ # and the VS Code extension at build time
├── package.json # npm workspaces + root scripts
├── .github/workflows/ # CI (PRs) + Release (tag-triggered publish)
├── .eslintrc.json # shared lint config (CLI + VS Code plugin)
├── .prettierrc # shared formatter config
├── .editorconfig # editor defaults
└── .nvmrc # Node version pin
The CLI and VS Code extension share a small TypeScript package (packages/shared) that holds the chunk-protocol parser and the model-pricing tables. At build time tsup (CLI) and esbuild (VS Code) inline it into each consumer's bundle, so neither published artifact depends on a separate package at runtime. The JetBrains plugin is Kotlin and does not consume the shared package.
Clone, then install per-app dependencies:
git clone https://github.com/edgar-durand/codeagent-mobile-clients.git
cd codeagent-mobile-clients
(cd apps/cli && npm install)
(cd apps/vsc-plugin && npm install)
Root convenience scripts:
| Script | What it does |
|---|---|
npm run build:cli | Build codeam-cli → apps/cli/dist/ |
npm run dev:cli | tsup --watch for the CLI |
npm run test:cli | Vitest for the CLI |
npm run publish:cli | npm publish (from apps/cli) |
npm run build:vsc-plugin | Build + vsce package → apps/vsc-plugin/*.vsix |
npm run publish:vsc-plugin | Publish to VS Code Marketplace (needs .env with PAT) |
npm run publish:vsc-plugin:cursor | Publish to Open VSX (needs .env with OVSX_TOKEN) |
npm run build:jetbrains-plugin | gradlew clean buildPlugin → apps/jetbrains-plugin/build/distributions/*.zip |
npm run reinstall:jetbrains-plugin | Rebuild + reinstall into local WebStorm (dev helper) |
JAVA_HOME to Homebrew's openjdk@17; adjust if yours lives elsewhere)gradlew) is committed, no global install needednpm run build:cli
npm run build:vsc-plugin
npm run build:jetbrains-plugin
Each app ships independently and keeps its own version number and changelog:
| App | Current | Changelog | Registry |
|---|---|---|---|
codeam-cli | 2.0.0 | apps/cli/CHANGELOG.md | npm |
| VS Code plugin | 2.0.0 | apps/vsc-plugin/CHANGELOG.md | VS Code Marketplace · Open VSX |
| JetBrains plugin | 2.0.0 | apps/jetbrains-plugin/CHANGELOG.md | JetBrains Marketplace |
From 2.0.0 onwards all three clients ship under the same version line. Pushing a single tag vX.Y.Z releases [email protected] to npm, the VS Code extension X.Y.Z to both the VS Code Marketplace and Open VSX, and the JetBrains plugin X.Y.Z to the JetBrains Marketplace stable channel via the automated release workflow. Pre-release tags (vX.Y.Z-rc.N) skip the JetBrains marketplace push — the .zip is still attached to the GitHub Release for manual upload to a non-stable channel.
Publishing secrets (PAT, OVSX_TOKEN, CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, PUBLISH_TOKEN) live in local .env files and are gitignored — they never land in this repo.
next first, latest after the journey canaryA tag publishes codeam-cli and @codeam/shared to the npm dist-tag next
and the Box image to codeam-box:<version>. The gate job then points next
(npm + codeam-box:next, which the dev fleet runs) at that version and runs the
journey canary in codeagent-mobile against dev; the canary requires its
Box session to report that exact version. Only a green run moves latest
(npm + codeam-box:latest) — what every Box/host self-updates to, what new
Boxes and codespaces boot — and lets the VS Code / JetBrains publishes and the
GitHub Release proceed. A red run leaves latest alone, resets next and
alerts Discord. So npm view codeam-cli version can trail the newest tag by
the gate's ~10–20 min, or stay behind a tag whose gate failed — check
npm view codeam-cli dist-tags before suspecting the token. Break-glass: repo
variable CLI_RELEASE_GATE=bypass (delete it afterwards).
The release workflow ends with a verify-published job that re-reads the
registry (npm view codeam-cli@<version> + npm view @codeam/shared@<version>)
and fails the run if either package is missing — a green release now means npm
actually serves it, not merely that the publish job exited 0.
⚠️ If
npm view codeam-cli versionlags the latest git tag, checkNPM_TOKENexpiry first — granular npm tokens expire after 90 days. That is what silently broke v2.65.8 → v2.65.11 (four releases over four days: the publish jobs went red, nobody watched the Actions tab, and npm stayed on 2.65.7). Mint a fresh Automation token with publish rights oncodeam-cliand the@codeamscope, update theNPM_TOKENrepo secret, and re-run the failed jobs — the publish steps are idempotent, so retries are safe.
Any failing job in the release workflow also posts to Discord via the
DISCORD_RELEASE_WEBHOOK repo secret (Settings → Secrets and variables →
Actions). If that secret is unset the workflow still fails, but only logs a
warning — set it so a broken release pings you the same day.
┌─────────────────────┐ REST + WebSocket ┌────────────────────┐
│ Mobile app / Web │ ───────────────────▶│ CodeAgent backend │
│ dashboard │ │ │
└─────────────────────┘ └─────────┬──────────┘
│ WebSocket / HTTP poll
▼
┌────────────────────┐
│ THIS REPO │
│ ────────────── │
│ • codeam-cli │
│ • VS Code plugin │
│ • JetBrains plugin │
└──────────┬─────────┘
│ PTY / IDE APIs
▼
┌────────────────────┐
│ Claude Code / │
│ OpenAI Codex / │
│ Copilot / Cursor │
│ / JetBrains AI… │
└────────────────────┘
The clients never talk to each other. Each one connects to the backend relay and relays commands to whichever local agent (Claude Code via PTY, Copilot Chat via the VS Code API, IntelliJ terminal, etc.) the user has selected.
Issues and pull requests are welcome. Please:
npm run test:cli (CLI) and make sure npm run build:* succeeds before opening a PR.For backend / mobile app / web dashboard issues, use the in-app Help & FAQ — those sources aren't in this repo.
MIT © Edgar Durand