Ship a signed Desktop Tools app for agents outside Ace
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 15/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- github-actions, swift, typescript
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Swift
- Étoiles
- 0
- Forks
- 0
- Merge moyen
- 19 min
- PR mergées (30 j)
- 107
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de githubnext/desktop-tools
-
Ace: adopt desktopToolRules()Ouverteace documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
githubnext/desktop-tools#104 ·
Les mainteneurs répondent en général sous 1 jour
-
Linux support (meta)Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
githubnext/desktop-tools#136 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Select text in a PDFOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
githubnext/desktop-tools#130 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
githubnext/desktop-tools#129 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
githubnext/desktop-tools#117 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de githubnext/desktop-tools
Issues similaires
-
Review backlog (style): Test helper still reads stdout after waitUntilExitPeut-être pris @hivecommons-hive l’a pris aujourd’hui. Ouverteagent/reviewer help wanted hive/claimed-by-scanner stage/030-pr-in-progress
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
hivecommons/hotshot#243 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Ctrl+C while pictures are drawing also kills the image worker (traceback, story ends partial/failed)Ouvertelow-priority
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
jessvb/tiny-talk-adventures#92 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 1 jour
-
bug tests
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
jonathanong/no-mistakes#2261 ·
Les mainteneurs répondent en général sous 1 jour