ReviewOS

also looking at this

stacks/uplink

feat(engine): answer texts with Codex as well as Claude Code

#7
Merged glennmichael123 wants to merge feat/codex-engine into main
18 files +1080 -142
.env.examplemodified+19-1
Changes to .env.example
@@ -138,14 +138,32 @@ TS_CLOUD_UI_PASSWORD=
138138# forward this process cannot see, or 0 to keep a public box off public DNS.
139139# TS_CLOUD_SSH_PUBLISH_DNS=
140140
141# Uplink - text this Mac, get Claude. See README.md.
141# Uplink - text this Mac, get an agent. See README.md.
142142# Who may command it. Empty = this Mac's own Messages handles only ("text myself").
143143# Anyone listed can make an agent act on this Mac, so list only yourself.
144144UPLINK_ALLOWED=
145# Which agent CLI answers: claude or codex. Empty = claude.
146UPLINK_ENGINE=
147# --- Claude Code ---
145148# From `claude setup-token` (your Claude Max login, good for a year). Encrypt it: ./buddy env:set
146149CLAUDE_CODE_OAUTH_TOKEN=
147150# Optional: model alias for runs (sonnet, opus, haiku). Empty = the CLI's default.
151# UPLINK_MODEL is the older name for this and still works.
152UPLINK_CLAUDE_MODEL=
148153UPLINK_MODEL=
154# Optional: where the claude binary is, if it is not on PATH.
155UPLINK_CLAUDE_BIN=
156# --- Codex ---
157# Sign in with `codex login` (or `codex login --device-auth` over SSH). Codex keeps the
158# credential itself, under CODEX_HOME, so there is no token to put here.
159# Optional: where the codex binary is. Uplink also looks inside ChatGPT.app, which bundles one.
160UPLINK_CODEX_BIN=
161# Optional: model the agent should use. Empty = the CLI's default.
162UPLINK_CODEX_MODEL=
163# How much Codex may do without asking. `bypass` matches what Uplink asks of Claude Code:
164# no approval prompts, no sandbox, because nobody is at the Mac to answer one.
165# Also: danger-full-access, workspace-write, read-only.
166UPLINK_CODEX_PERMISSION=bypass
149167# Where runs start when a text names no path.
150168UPLINK_WORKDIR=~
151169# Replies longer than UPLINK_MAX_CHARS are split; past UPLINK_MAX_PARTS the rest waits for "more".