Releases: gregoryoviedo/agentower
Releases · gregoryoviedo/agentower
Release list
v0.4.1 — Windows self-install & login auto-start
Highlights
- Windows self-install & login auto-start —
Agentower.execan now self-install and register itself to start on login, mirroring the macOS flow. - Windows settings polish — settings hints now match the macOS wording, and the idle thresholds are documented as 2 min (completion) / 1 min (question).
- Docs — the Windows install and auto-start flow is documented.
Assets
Agentower.app.zip— macOS: ad-hoc signed menu-bar app (arm64). Unzip and drag to/Applications. Requires macOS 13.0+.Agentower.exe— Windows: self-contained tray app (win-x64). Requires Windows 10/11 x64; no .NET install needed.
Requirements
- Go 1.22+ (only if you build the
remote-botbinary yourself) - At least one of:
opencode,claude,kiro,copilot,codex,agyon PATH - macOS 13.0+ for the macOS app; Windows 10/11 x64 for the Windows app
v0.4.0 — Windows wrapper & Codex/Antigravity support
Highlights
- Native Windows wrapper — new
Agentower.exe(C#/.NET 8 WinForms) lives in the notification area with feature parity to macOS: settings, agent detection with Windows paths, idle notifications and login auto-start. It is published as a self-containedwin-x64binary, so no .NET runtime is required. - Codex agent — headless
codex exec --json -transport, resumed withcodex exec resume <id> --json -. History is read from~/.codex/sessions/**/rollout-*.jsonl(AGENTOWER_CODEX_STATE_DIRto override). Auto-approval flags by default, overridable viaAGENT_CODEX_ARGS. - Antigravity agent — headless
agy -p --output-format stream-jsontransport, resumed with--conversation <id>. Reads the readabletranscript_full.jsonl/history.jsonl(the per-conversation.dbfiles are opaque protobuf). CLI args overridable viaAGENT_ANTIGRAVITY_ARGS. - Structured questions (opencode) — pending questions now suppress the completion notification and are rendered one Telegram message per question with
q|/qd|option buttons; free-text answers are routed back throughReplyQuestion. - Session resume —
/resumefans out to everySessionLocator(opencode HTTP, Claude JSONL, Kiro JSONL, VS Code Copilot) and/continuereactivates the last completed session. - Auto-start — both wrappers launch the bot automatically on start when the config is valid.
- Cross-platform core — agent detection and subprocess handling are split per OS (
process_unix.go/process_windows.go); PATH is augmented on GUI launches (Finder/launchd and the Explorer environment) so agents installed in user bin dirs are found. - Detection & icons — detection probes PATH and then app bundles/installers (VS Code Copilot, Kiro, Antigravity); refreshed menu-bar and app icons.
- Docs — README, DESIGN, PRODUCT, SECURITY, CONTRIBUTING plus the macOS and Windows wrapper READMEs updated.
Assets
Agentower.app.zip— macOS: ad-hoc signed menu-bar app (arm64). Unzip and drag to/Applications. Requires macOS 13.0+.Agentower.exe— Windows: self-contained tray app (win-x64). Requires Windows 10/11 x64; no .NET install needed.
Requirements
- Go 1.22+ (only if you build the
remote-botbinary yourself) - At least one of:
opencode,claude,kiro,copilot,codex,agyon PATH - macOS 13.0+ for the macOS app; Windows 10/11 x64 for the Windows app
v0.3.0 — Multi-agent registry & macOS Settings
Highlights
- Multi-agent registry — single bot now drives opencode (HTTP), Claude Code, Codex, Kiro (stdio JSON) and GitHub Copilot (LSP). Pick an agent per chat from Telegram with
/agentor/agents. - macOS app — Settings tabbed UI — agent detection in PATH, better empty/error states, multi-agent section in the menu-bar app.
- Persistence — new
agent_statetable +agent_kindmigration. Workspace, project, session and active agent survive restarts. - Refactor — opencode moved into
internal/adapter/agents/opencode, introducesAgentKindandAgentAdapterport. - Tests — coverage for agent management and session handling.
- Docs — refreshed README, DESIGN, PRODUCT, SECURITY, CONTRIBUTING and macOS README.
Asset
Agentower.app.zip— ad-hoc signed macOS menu-bar app. Unzip and drag to/Applications. macOS 13.0+.
Requirements
- Go 1.22+ (only if you build the binary yourself)
- At least one of:
opencode,claude,codex,kiro,copiloton PATH
v0.1.0 — macOS menu-bar wrapper
✨ Novedades
- App nativa de macOS (
OpenCodeRemote.app, arm64, ~12 MB)- Icono en la barra de menús con toggle estilo Bluetooth.
- Formulario de Settings en SwiftUI (
WORKSPACE_ROOT, token de Telegram, chat ID, puerto y bin de OpenCode, autostart,TELEGRAM_API_ROOT,TELEGRAM_PROXY_URL). - Auto-inicio al login vía
SMAppService.mainApp. - Logs accesibles desde el menú (
~/Library/Logs/OpenCodeRemote/bot.log). - Build reproducible con
make app(XcodeGen + xcodebuild + codesign ad-hoc).
- Binario Go endurecido:
TELEGRAM_API_ROOTyTELEGRAM_PROXY_URLahora se leen del entorno o del.env, y el wrapper los reenvía al proceso hijo enproc.environment(antes se quedaban en el.envy nunca llegaban al bot).- Respuestas JSON del cliente OpenCode capadas a 32 MB con
io.LimitReaderpara evitar OOM ante un server rebelde. domain/errors.goahora expone sentinels (ErrUnauthorizedNavigation,ErrServerNotRunning,ErrSessionRequired,ErrProjectRequired,ErrWorkspaceNotConfigured) para que adapters y callers puedan hacererrors.Is.- Renombrado
usecase.BotHandlerausecase.Handlerpara eliminar la colisión con el portdomain.BotHandler. - Eliminado código muerto:
domain.AppConfig,domain.OpenCodeEvent,OpenCodeClient.SubscribeEventsy el pipeline SSE completo (unas 80 líneas sin caller).
- Wrapper Swift más robusto:
TELEGRAM_API_ROOTyTELEGRAM_PROXY_URLse exportan al binario Go enproc.environment(bug crítico corregido).StatusBarControllerya no leakea el observer deNotificationCenter(se desuscribe endeinit).LoginItemManager.isInstalledInApplicationsexige match exacto de/Applications/o~/Applications/(antes matcheaba falsos positivos como~/Downloads/.../Applications/).- El "Tiempo activo" del popover refresca cada segundo con un
Timer.publish(every: 1). applyPaste(.port)ahora muestra feedback en lugar de descartar silenciosamente valores inválidos.savedAtse limpia cuando un guardado falla.- Quitada la duplicación
stateSubject+onStateChangeenAppDelegate; queda una sola vía de notificación.
- Documentación:
README.md: sección nueva App nativa de macOS con build, instalación, Gatekeeper, auto-inicio, toggle y prerequisitos (Xcode,XcodeGen,Go,Pillow).docs/DESIGN.md: nueva sección Why two different architectures in one project explicando por qué Go usa hexagonal y Swift usa MVVM, y por qué la frontera entre los dos runtimes es un contrato de proceso (.env+Process), no código compartido.docs/PRODUCT.md: el wrapper Swift queda registrado en Implemented; Out of scope se ajusta (sigue siendo single-user / single-chat; el wrapper no toca la red).
🐛 Bug fix crítico
TELEGRAM_API_ROOT y TELEGRAM_PROXY_URL configurados en Settings del wrapper ahora sí llegan al proceso Go (antes se escribían al .env pero el bot los leía con os.Getenv, no del .env). Si usás un mirror de la API o un proxy corporativo, esto te afecta directamente.
📦 Artefactos
OpenCodeRemote.app— bundle macOS arm64 ad-hoc firmado, ~12 MB.
Embeido: binarioremote-botarm64 (~10 MB) generado congo build -trimpath -ldflags="-s -w".
🔧 Instalación
# 1. Mover a /Applications
cp -R OpenCodeRemote.app /Applications/
# 2. Quitar marca de Gatekeeper (no tiene Developer ID)
xattr -dr com.apple.quarantine /Applications/OpenCodeRemote.app
# 3. Abrir
open /Applications/OpenCodeRemote.appPrimera vez: abrir Settings…, llenar los 3 campos obligatorios, Guardar. A partir de ahí el toggle funciona.
🧪 Uso sin wrapper (CLI puro)
go build -o remote-bot ./cmd/remote-bot
cp .env.example .env
$EDITOR .env
./remote-bot⚠️ Notas
- App ad-hoc firmada. macOS la bloquea en la primera apertura; click-derecho → Abrir, o
xattr -dr com.apple.quarantine /Applications/OpenCodeRemote.app. - arm64-only (sin slice Intel por ahora).
- Sandbox deshabilitado en el wrapper porque hace spawn de un binario externo y escribe en
~/Library/....