Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Ship a signed Desktop Tools app for agents outside Ace

Fechada
#27 3 comentários 0 reações 0 responsáveis Ver no GitHub

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
Domínio
ci-cd, cli, desktop

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

enhancement

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 calls desktop_tools_start(socket, "dev.githubnext.desktop-tools.desktop-client"), exactly like Ace (ace apps/desktop/src/native.ts).
  • The client ships as Contents/MacOS/desktop-tools-client, signed with identifier dev.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_servers equivalent.

The tool definitions move into the package so Ace and MCP share one source.

Build and release:

  1. src/app.ts: build the runtime, assemble the bundle, and sign inside-out with the hardened runtime. Copy Ace's apps/desktop/scripts/sign.ts order: Frameworks, client (identifier, no entitlements), executable, app; then codesign --verify --deep --strict.
  2. .github/workflows/release.yml on workflow_dispatch, environment release:
    • temporary keychain from the p12;
    • notarize the zip and DMG with xcrun notarytool and an App Store Connect API key;
    • staple;
    • spctl --assess;
    • attach to a GitHub Release.
  3. 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

  1. App target and local signed build (local Developer ID identity), then a live MCP run with Claude Code and Codex.
  2. Release workflow and notarization.
  3. Land #12 rebased, with defaults and shared tool definitions.
  4. 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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de githubnext/desktop-tools

Todas as issues de githubnext/desktop-tools

Issues semelhantes

Mais issues de Swift

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.