Ship a signed Desktop Tools app for agents outside Ace
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- github-actions, swift, typescript
Línea de trabajo
Start with src/app.ts and the existing runtime start call, then read Ace's apps/desktop/src/native.ts and apps/desktop/scripts/sign.ts for the signing order. The work spans a new menu bar app target, the MCP defaults in desktop-tools-mcp, and .github/workflows/release.yml, and it needs Apple signing secrets from an admin. Done means a signed, notarized build that passes codesign --verify --deep --strict and spctl --assess, plus a working MCP setup in Claude Code and Codex.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Agents outside Ace (Claude Code, Codex) can use desktop tools today only by borrowing Ace's grants through its client and socket (#24, stretch notes on #12). A standalone signed host app gives them their own visible, revocable grants and leaves Ace's alone.
This reverses the README's "a vendor-signed companion is not part of this package"; the README changes with it.
Shape
App: Desktop Tools.app, bundle ID dev.githubnext.desktop-tools, team 8S43JJMN6B.
- It's a menu bar app (
LSUIElement) whose process loads the runtime (libDesktopTools.dylib) and callsdesktop_tools_start(socket, "dev.githubnext.desktop-tools.desktop-client"), exactly like Ace (aceapps/desktop/src/native.ts). - The client ships as
Contents/MacOS/desktop-tools-client, signed with identifierdev.githubnext.desktop-tools.desktop-client. - Socket:
~/.local/state/desktop-tools/desktop.sock(0600). Client link:~/.local/state/desktop-tools/desktop-client.
The menu shows:
- Accessibility, Screen Recording and Keyboard input status, with grant buttons (
desktop_tools_permission). - Serving on or off; off stops the runtime.
- The last action and its caller (the client's parent process name), so outside use is visible. This is the minimum answer to #24 for this app.
- Quit.
MCP: desktop-tools-mcp (#12) defaults --client and --socket to the app's state dir and --name to "Desktop Tools". Setup becomes:
claude mcp add desktop -- npx -y github:githubnext/desktop-tools desktop-tools-mcp- or the Codex
mcp_serversequivalent.
The tool definitions move into the package so Ace and MCP share one source.
Build and release:
src/app.ts: build the runtime, assemble the bundle, and sign inside-out with the hardened runtime. Copy Ace'sapps/desktop/scripts/sign.tsorder: Frameworks, client (identifier, no entitlements), executable, app; thencodesign --verify --deep --strict..github/workflows/release.ymlonworkflow_dispatch, environmentrelease:- temporary keychain from the p12;
- notarize the zip and DMG with
xcrun notarytooland an App Store Connect API key; - staple;
spctl --assess;- attach to a GitHub Release.
- No auto-update in v1 (no Sparkle); a release is downloaded by hand.
Secrets: to be added by an admin to environment release, same values as Ace's desktop-* environments.
- Secrets:
DT_CERTIFICATE_P12,DT_CERTIFICATE_PASSWORD,DT_NOTARY_PRIVATE_KEY. - Variables:
DT_CODESIGN_IDENTITY,DT_NOTARY_KEY_ID,DT_NOTARY_ISSUER.
Order
- App target and local signed build (local Developer ID identity), then a live MCP run with Claude Code and Codex.
- Release workflow and notarization.
- Land #12 rebased, with defaults and shared tool definitions.
- README, and a link from Ace's docs.
- Lenguaje dominante
- Swift
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 31 min
- PR fusionados (30 d)
- 14
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de githubnext/desktop-tools
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
githubnext/desktop-tools#25 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
githubnext/desktop-tools#30 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
githubnext/desktop-tools#24 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
githubnext/desktop-tools#23 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
githubnext/desktop-tools#18 ·
Los mantenedores suelen responder en 1 día
Todos los issues de githubnext/desktop-tools
Issues similares
-
type: cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
googleapis/google-cloud-swift#1477 ·
Los mantenedores suelen responder en 1 día
-
🐛 Bug Report: Console `/join` shows an endless spinner for invited users who are not signed inAbiertoproduct / auth product / console product / databases product / messaging product / self-hosted product / sites product / storage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
P1 status: first-line-handled status: needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
a2ui-project/a2ui#3282 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
binding:web core docs p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Countly/countly-sdk-ios#485 ·
Los mantenedores suelen responder en 1 día