Ship a signed Desktop Tools app for agents outside Ace
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 15/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- github-actions, swift, typescript
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Swift
- Estrelas
- 0
- Forks
- 0
- Merge médio
- 39min
- PRs com merge (30d)
- 144
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de githubnext/desktop-tools
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
githubnext/desktop-tools#192 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
githubnext/desktop-tools#199 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
githubnext/desktop-tools#200 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 58/100
githubnext/desktop-tools#198 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 52/100
githubnext/desktop-tools#197 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de githubnext/desktop-tools
Issues semelhantes
-
product / auth product / databases product / functions product / messaging product / storage product / vcs
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
storage: eliminate force-unwraps and fatalError in continueStreamingUploadTalvez já em andamento @chingor13 assumiu hoje. Abertaapi: storage type: cleanup
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
googleapis/google-cloud-swift#1527 ·
Mantenedores costumam responder em até 1 dia
-
ci-failure ci:assertion test
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
openwatersio/slackwater-ios#811 ·
Mantenedores costumam responder em até 1 dia
-
ai-assisted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
swiftlang/swift-testing#1979 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 63/100
Mantenedores costumam responder em até 1 dia