Skip to content

Commit 3fe56b4

Browse files
Route Gemini entrypoints through locked agy
1 parent adee66f commit 3fe56b4

17 files changed

Lines changed: 642 additions & 252 deletions

README.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ graph LR
9191
subgraph agents ["AI Agents"]
9292
CLAUDE["Claude Code"]
9393
CODEX["Codex CLI"]
94-
GEMINI["Gemini CLI"]
94+
AGY["Antigravity CLI"]
9595
end
9696
9797
LAPTOP --> BROWSER
@@ -101,7 +101,7 @@ graph LR
101101
INSTALLER --> CONFIGURED
102102
CONFIGURED --> CLAUDE
103103
CONFIGURED --> CODEX
104-
CONFIGURED --> GEMINI
104+
CONFIGURED --> AGY
105105
106106
classDef user fill:#e3f2fd,stroke:#90caf9,stroke-width:2px
107107
classDef wizard fill:#fff8e1,stroke:#ffcc80,stroke-width:2px
@@ -171,7 +171,7 @@ flowchart TB
171171
AcfsHome["~/.acfs/<br/>configs + scripts + state.json"]
172172
Commands["Commands<br/>acfs doctor / acfs update / acfs services-setup / onboard"]
173173
Tools["Installed tools<br/>bun/uv/rust/go + tmux/rg/gh + vault + ..."]
174-
Agents["Agent CLIs<br/>claude / codex / gemini"]
174+
Agents["Agent CLIs<br/>claude / codex / agy"]
175175
Stack["Stack tools<br/>ntm / mcp_agent_mail / ubs / bv / cass / cm / caam / slb / dcg / ru"]
176176
end
177177
@@ -466,7 +466,7 @@ graph TD
466466
C["Phase 3: Shell Setup<br/><small>zsh, oh-my-zsh, powerlevel10k</small>"]
467467
D["Phase 4: CLI Tools<br/><small>ripgrep, fzf, lazygit, etc.</small>"]
468468
E["Phase 5: Language Runtimes<br/><small>bun, uv, rust, go</small>"]
469-
F["Phase 6: AI Agents<br/><small>claude, codex, gemini</small>"]
469+
F["Phase 6: AI Agents<br/><small>claude, codex, agy</small>"]
470470
G["Phase 7: Cloud Tools<br/><small>vault, wrangler, supabase, vercel</small>"]
471471
H["Phase 8: Dicklesworthstone Stack<br/><small>ntm, dcg, ru, ubs, mcp_agent_mail, etc.</small>"]
472472
I["Phase 9: Configuration<br/><small>Deploy acfs.zshrc, tmux.conf</small>"]
@@ -947,7 +947,7 @@ The Learning Hub provides interactive lessons with progress tracking:
947947
| 3 | tmux Basics | 7 min | Sessions, windows, panes, survival |
948948
| 4 | Git Essentials | 10 min | Version control, dangerous operations |
949949
| 5 | GitHub CLI | 8 min | Issues, PRs, releases via `gh` |
950-
| 6 | Agent Commands | 10 min | Claude, Codex, Gemini usage |
950+
| 6 | Agent Commands | 10 min | Claude, Codex, Antigravity usage |
951951
| 7 | NTM Command Center | 8 min | Session orchestration |
952952
| 8 | NTM Prompt Palette | 6 min | Quick command access |
953953
| 9 | The Flywheel Loop | 8 min | How all 10 tools work together |
@@ -1241,11 +1241,9 @@ alias cc='NODE_OPTIONS="--max-old-space-size=32768" claude --dangerously-skip-pe
12411241
# Codex with bypass and dangerous filesystem access
12421242
alias cod='codex --dangerously-bypass-approvals-and-sandbox'
12431243
1244-
# Antigravity CLI (successor to the retired Gemini CLI), model-pinned + auto-approve
1245-
agy() { command agy --model "Gemini 3.1 Pro (High)" --dangerously-skip-permissions "$@"; }
1246-
1247-
# Gemini CLI — LEGACY (retired 2026-06-18; kept only to read old ~/.gemini/tmp history)
1248-
alias gmi='gemini --yolo'
1244+
# Antigravity CLI, model/settings/DCG locked by the ACFS launcher
1245+
alias agy='$HOME/.local/bin/agy-locked'
1246+
alias gmi='$HOME/.local/bin/agy-locked'
12491247
```
12501248
12511249
**Installation & Updates:**
@@ -1331,7 +1329,7 @@ $ acfs doctor
13311329
║ Agents ║
13321330
║ ✔ claude 1.0.24 ║
13331331
║ ✔ codex 0.1.2504252326 ║
1334-
║ ✔ gemini 0.1.12
1332+
║ ✔ agy 1.0.12
13351333
║ ║
13361334
║ Cloud ║
13371335
║ ✔ vault 1.18.3 ║
@@ -1845,7 +1843,7 @@ Component update logic with version tracking and logging:
18451843
```bash
18461844
update_apt() # apt update/upgrade with lock detection
18471845
update_bun() # bun upgrade with version tracking
1848-
update_agents() # Claude, Codex, Gemini (version before/after)
1846+
update_agents() # Claude, Codex, Antigravity (version before/after)
18491847
update_cloud() # Wrangler, Supabase, Vercel (Supabase uses verified release tarball)
18501848
update_rust() # rustup update stable
18511849
update_uv() # uv self update
@@ -1971,7 +1969,7 @@ interface SessionExport {
19711969
schema_version: 1;
19721970
exported_at: string; // ISO8601
19731971
session_id: string;
1974-
agent: "claude-code" | "codex" | "gemini";
1972+
agent: "claude-code" | "codex" | "agy";
19751973
model: string;
19761974
summary: string;
19771975
duration_minutes: number;
@@ -3226,7 +3224,7 @@ scripts/generated/
32263224
├── install_network.sh # Tailscale
32273225
├── install_lang.sh # bun, uv, rust, go
32283226
├── install_tools.sh # ast-grep, atuin, zoxide
3229-
├── install_agents.sh # claude, codex, gemini
3227+
├── install_agents.sh # claude, codex, agy
32303228
├── install_db.sh # PostgreSQL 18, Vault
32313229
├── install_cloud.sh # wrangler, supabase, vercel
32323230
├── install_stack.sh # Dicklesworthstone 10-tool stack + utilities
@@ -4168,13 +4166,13 @@ codex --version
41684166
codex # Follow first-run sign-in prompts
41694167
```
41704168
4171-
**Gemini CLI**:
4169+
**Antigravity CLI**:
41724170
```bash
41734171
# Check auth status
4174-
gemini --version
4172+
agy --version
41754173
41764174
# Re-authenticate
4177-
gemini # Follow Google login flow, or use /auth inside Gemini CLI
4175+
agy # Follow Google login flow
41784176
```
41794177
41804178
### "Command Not Found" After Install

acfs.manifest.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ modules:
801801
802802
parent_comm="$(ps -o comm= -p "${PPID:-0}" 2>/dev/null || true)"
803803
case "$parent_comm" in
804-
claude|codex|cod|cc|gmi|gemini|bun|node) return 0 ;;
804+
claude|codex|cod|cc|agy|antigravity|agy-locked|gmi|gemini|bun|node) return 0 ;;
805805
*) return 1 ;;
806806
esac
807807
}
@@ -947,13 +947,13 @@ modules:
947947
"$target_bin/codex" --version || "$target_bin/codex" --help
948948
949949
- id: agents.gemini
950-
description: Google Gemini CLI
950+
description: Legacy Google Gemini CLI (retired; not installed by default)
951951
category: agents
952952
phase: 7
953953
run_as: target_user
954-
optional: false
955-
enabled_by_default: true
956-
tags: [recommended, agent]
954+
optional: true
955+
enabled_by_default: false
956+
tags: [legacy, agent]
957957
dependencies:
958958
- lang.bun
959959
- lang.nvm
@@ -1074,7 +1074,7 @@ modules:
10741074
notes:
10751075
- "Pin the model to 'Gemini 3.1 Pro (High)' on every invocation (see scripts/lib/agy_model_guard.sh)"
10761076
- "Auth is Google OAuth (a human step); the agy() shell function in acfs.zshrc launches it model-pinned"
1077-
- "Legacy gmi/Gemini CLI (agents.gemini) is kept only for reading old ~/.gemini/tmp history"
1077+
- "ACFS installs agy-locked and maps both agy and gmi to it; the legacy Gemini CLI module is not installed by default"
10781078

10791079
- id: agents.opencode
10801080
description: OpenCode (multi-provider agent harness)
@@ -3334,7 +3334,7 @@ modules:
33343334
dependencies:
33353335
- agents.claude
33363336
- agents.codex
3337-
- agents.gemini
3337+
- agents.antigravity
33383338
- cli.modern
33393339
installed_check:
33403340
run_as: target_user
@@ -3359,7 +3359,7 @@ modules:
33593359
" 0:welcome - This instructions window" \
33603360
" 1:claude - Claude Code (Anthropic)" \
33613361
" 2:codex - Codex CLI (OpenAI)" \
3362-
" 3:gemini - Gemini CLI (Google)" \
3362+
" 3:agy - Antigravity CLI (Google)" \
33633363
"" \
33643364
" TMUX BASICS:" \
33653365
" Ctrl-b d - Detach (keep session running)" \
@@ -3370,7 +3370,7 @@ modules:
33703370
" START AN AGENT:" \
33713371
" claude - Start Claude Code" \
33723372
" codex - Start Codex CLI" \
3373-
" gemini - Start Gemini CLI" \
3373+
" agy - Start Antigravity CLI" \
33743374
"" \
33753375
" PROJECT: /data/projects/my_first_project" \
33763376
" (Rename with: mv /data/projects/my_first_project /data/projects/NEW_NAME)" \
@@ -3385,7 +3385,7 @@ modules:
33853385
# Add agent windows
33863386
tmux new-window -t "$SESSION_NAME" -n "claude" -c /data/projects/my_first_project
33873387
tmux new-window -t "$SESSION_NAME" -n "codex" -c /data/projects/my_first_project
3388-
tmux new-window -t "$SESSION_NAME" -n "gemini" -c /data/projects/my_first_project
3388+
tmux new-window -t "$SESSION_NAME" -n "agy" -c /data/projects/my_first_project
33893389
33903390
# Send instructions to welcome window
33913391
tmux send-keys -t "$SESSION_NAME:welcome" "cat ~/.acfs/workspace-instructions.txt" Enter

acfs/zsh/acfs.zshrc

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ alias install='sudo apt install'
164164
alias search='apt search'
165165

166166
# Update agent CLIs
167-
alias uca='(curl -fsSL https://claude.ai/install.sh | bash -s -- latest) && ("$HOME/.bun/bin/bun" install -g --trust @openai/codex@latest || "$HOME/.bun/bin/bun" install -g --trust @openai/codex) && (curl -fsSL https://antigravity.google/cli/install.sh | bash) && ("$HOME/.bun/bin/bun" install -g --trust @google/gemini-cli@latest && curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/misc_coding_agent_tips_and_scripts/main/fix-gemini-cli-ebadf-crash.sh | bash)'
167+
alias uca='(curl -fsSL https://claude.ai/install.sh | bash -s -- latest) && ("$HOME/.bun/bin/bun" install -g --trust @openai/codex@latest || "$HOME/.bun/bin/bun" install -g --trust @openai/codex) && "$HOME/.local/bin/agy" update'
168168

169169
# --- Custom functions ---
170170
mkcd() { mkdir -p "$1" && cd "$1" || return; }
@@ -527,25 +527,9 @@ fi
527527
alias cc='NODE_OPTIONS="--max-old-space-size=32768" ~/.local/bin/claude --dangerously-skip-permissions'
528528
alias cod='codex --dangerously-bypass-approvals-and-sandbox'
529529

530-
# gmi: LEGACY — the Gemini CLI retired June 18, 2026 (no longer serves Pro/Ultra/free
531-
# tiers). Kept only to read/resume already-existing ~/.gemini/tmp history. Use `agy`
532-
# for all new work. Updates gemini-cli via bun, applies patches, then launches.
533-
gmi() {
534-
echo "▶ Updating gemini-cli to latest..."
535-
"$HOME/.bun/bin/bun" install -g --trust @google/gemini-cli@latest 2>&1 | tail -1
536-
echo "▶ Applying patches..."
537-
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/misc_coding_agent_tips_and_scripts/main/fix-gemini-cli-ebadf-crash.sh | bash
538-
echo "▶ Launching gemini..."
539-
"$HOME/.bun/bin/gemini" --yolo "$@"
540-
}
541-
542-
# agy: Antigravity CLI (Google) — the successor to the retired gmi/Gemini CLI.
543-
# The agy binary self-updates in the background (no bun reinstall needed). Per the
544-
# agy_model_guard mandate the model is pinned to "Gemini 3.1 Pro (High)" — never a
545-
# Flash or non-High Pro tier. See ACFS scripts/lib/agy_model_guard.sh (source of truth).
546-
agy() {
547-
command agy --model "Gemini 3.1 Pro (High)" --dangerously-skip-permissions "$@"
548-
}
530+
# agy/gmi: Antigravity CLI (Google), locked to ACFS policy.
531+
alias agy='$HOME/.local/bin/agy-locked'
532+
alias gmi='$HOME/.local/bin/agy-locked'
549533

550534
# bun project helpers (common)
551535
alias bdev='bun run dev'

apps/web/lib/generated/manifest-modules.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export interface ManifestProvenanceMetadata {
3232

3333
export const manifestProvenance = {
3434
acfsVersion: "0.7.0",
35-
manifestSha256: "87d6c7762648da45c90b2bf7f8439a45b31b67d44905d09695d56165107b538c",
35+
manifestSha256: "68ada50689c30f1a9212481f5a53da562d704ed881ad92658e68a41b52d421ec",
3636
checksumsYamlSha256: "3c3f1fb130915218c4d1f3b567775986e7640a1daeb9ce8263485c9d546abc04",
3737
} as const satisfies ManifestProvenanceMetadata;
3838

@@ -336,19 +336,19 @@ export const manifestModules: ManifestModuleMetadata[] = [
336336
},
337337
{
338338
id: "agents.gemini",
339-
description: "Google Gemini CLI",
339+
description: "Legacy Google Gemini CLI (retired; not installed by default)",
340340
category: "agents",
341341
phase: 7,
342342
dependencies: [
343343
"lang.bun",
344344
"lang.nvm",
345345
],
346346
tags: [
347-
"recommended",
347+
"legacy",
348348
"agent",
349349
],
350-
enabledByDefault: true,
351-
optional: false,
350+
enabledByDefault: false,
351+
optional: true,
352352
},
353353
{
354354
id: "agents.antigravity",
@@ -990,7 +990,7 @@ export const manifestModules: ManifestModuleMetadata[] = [
990990
dependencies: [
991991
"agents.claude",
992992
"agents.codex",
993-
"agents.gemini",
993+
"agents.antigravity",
994994
"cli.modern",
995995
],
996996
tags: [
@@ -1084,7 +1084,7 @@ export const manifestSelectionProfiles: ManifestSelectionProfile[] = [
10841084
"lang.uv",
10851085
"agents.claude",
10861086
"agents.codex",
1087-
"agents.gemini",
1087+
"agents.antigravity",
10881088
"stack.ntm",
10891089
"stack.mcp_agent_mail",
10901090
"stack.ultimate_bug_scanner",

docs/AGY_MIGRATION_REFERENCE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ agy --version # -> 1.0.7
2727
| `brain/<uuid>/.system_generated/logs/transcript.jsonl` |**Clean JSONL transcript of the conversation** — the recommended READ source (§3). Also `transcript_full.jsonl`. |
2828
| `brain/<uuid>/.system_generated/messages/*.json` | Per-message JSON. |
2929
| `brain/<uuid>/*.md` | Working docs (implementation_plan.md / task.md / walkthrough.md) — only for substantive conversations. |
30-
| `settings.json` | `{ "enableTelemetry": false, "model": "Gemini 3.1 Pro (High)" }`the persisted default model + telemetry flag. |
30+
| `settings.json` | ACFS pins `enableTelemetry: false`, `model: "Gemini 3.1 Pro (High)"`, `toolPermission: "always-proceed"`, `artifactReviewPolicy: "always-proceed"`, native-terminal rendering, sandbox off, and the other `agy-locked` defaults before every launch. |
3131
| `cache/projects.json`, `cache/onboarding.json` | Workspace/onboarding metadata only (NOT history). |
3232
| `antigravity-oauth-token`, `installation_id`, `keybindings.json`, `builtin/`, `implicit/`, `log/cli-*.log` | Auth, ids, config, logs. |
3333
| `~/.gemini/config/mcp_config.json` | MCP server registration (empty by default; see §7). |
@@ -121,7 +121,7 @@ agy reads MCP servers from `~/.gemini/config/mcp_config.json` — **empty by def
121121

122122
| gmi (legacy) | agy |
123123
|---|---|
124-
| `gmi` (interactive) | `agy` (interactive) |
124+
| `gmi` (interactive) | `agy-locked` (same forward path as `agy`) |
125125
| scripted prompt | `agy --print "<prompt>" --model "Gemini 3.1 Pro (High)"` |
126126
| history `~/.gemini/tmp/<hash>/chats/session-*.json` (JSON) | `~/.gemini/antigravity-cli/conversations/<uuid>.db` + `brain/<uuid>/…/transcript.jsonl` |
127127
| resume | `agy --continue` / `agy --conversation <uuid>` |

docs/AGY_ROLLOUT_CUTOVER.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ forward path for all new work.
1616

1717
## Guiding principle (applied everywhere)
1818

19-
- **Operational** ("start a session" / spawn / recommend / default swarm) → `agy`.
19+
- **Operational** ("start a session" / spawn / recommend / default swarm) → `agy`
20+
through the ACFS `agy-locked` launcher.
2021
- **Historical** (resume/read/discover an existing Gemini session) → keep `gmi`/`gemini`.
2122
- **Model mandate**: every `agy` invocation is pinned to **`Gemini 3.1 Pro (High)`**
2223
the only allowed model. Single source of truth: `scripts/lib/agy_model_guard.sh`
@@ -29,7 +30,7 @@ forward path for all new work.
2930

3031
| Surface | Status | Notes |
3132
|---|---|---|
32-
| **ACFS install** || `agents.antigravity` manifest module (verified_installer, checksum-gated); `uca` updates agy; `agy()` model-pinned launcher in acfs.zshrc; `doctor` checks `agent.alias.agy`. |
33+
| **ACFS install** || `agents.antigravity` manifest module (verified_installer, checksum-gated); `uca` updates agy; `agy-locked` pins settings/model, installs the Antigravity dcg hook, and backs both `agy` and `gmi`. |
3334
| **ACFS docs/onboarding** || AGENTS.md, README, onboarding lessons, info/report/continue/cheatsheet, swarm-default mixes (`--agy=`). |
3435
| **ACFS checksum monitor** || `antigravity` in `KNOWN_INSTALLERS` + `checksums.yaml`; monitored like uv/rustup/bun. |
3536
| **Shared e2e harness** || `scripts/lib/agy_e2e_harness.sh` (structured logging, skip-if-unauth, model-guard, headless round-trip). |
@@ -65,15 +66,16 @@ history and must not break:
6566

6667
- casr `src/providers/gemini.rs`, ntm/cass gemini discovery, dcg `Agent::GeminiCli`,
6768
caam legacy gemini account handling, franken gemini connector.
68-
- ACFS `agents.gemini` manifest module + `gmi()` zshrc launcher (relabelled legacy).
69+
- ACFS `agents.gemini` manifest module is optional legacy; `gmi` now launches the
70+
same `agy-locked` forward path as `agy`.
6971
- Doc tables that list `--gmi=N` as a legacy flag alongside `--agy=N`.
7072

7173
## Keep / remove decision (final) + user comms
7274

73-
- **Decision: keep `gmi` as a labeled legacy reader everywhere; never remove it.**
74-
Old `~/.gemini/tmp/<hash>/chats/*.json` history must stay readable/resumable
75-
indefinitely so previously-indexed data is never stranded. Only the *forward*
76-
path (spawn / recommend / default swarm / new sessions) moved to `agy`.
75+
- **Decision: keep the old Gemini history readable through history/indexing tools,
76+
but make the `gmi` command launch `agy-locked`.** Old
77+
`~/.gemini/tmp/<hash>/chats/*.json` data must stay readable/resumable by tools
78+
that understand it, but the shell command no longer starts the retired CLI.
7779
- **Sequencing met the deadline**: the user-facing path — ACFS install, `ntm spawn`,
7880
cass index, casr resume, the skills, and the swarm helpers — all drive `agy`
7981
before the 2026-06-18 retirement; agy was installed+authed on all 7 machines first.

0 commit comments

Comments
 (0)