Skip to content

Instantly share code, notes, and snippets.

@renatoapcosta
Last active February 21, 2026 16:29
Show Gist options
  • Select an option

  • Save renatoapcosta/41807eeaf81aef13656c57ec8402a134 to your computer and use it in GitHub Desktop.

Select an option

Save renatoapcosta/41807eeaf81aef13656c57ec8402a134 to your computer and use it in GitHub Desktop.
macOs-LaunchAgent

✅ Situação

Registrar um host local via mDNS:

myapp.local → 127.0.0.1

E manter o comando abaixo ativo automaticamente ao iniciar a máquina (ambiente corp, sem sudo):

dns-sd -A myapp.local 127.0.0.1

O dns-sd -A mantém o registro apenas enquanto o processo estiver ativo.


🔧 Ação

Criar um LaunchAgent em user-space.

  1. Criar diretório (caso não exista)

    mkdir -p ~/Library/LaunchAgents

  2. Criar o arquivo

    nano ~/Library/LaunchAgents/com.local.myapp.mdns.plist

  3. Conteúdo do arquivo:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>Label</key>
        <string>com.local.myapp.mdns</string>

        <key>ProgramArguments</key>
        <array>
          <string>/usr/bin/dns-sd</string>
          <string>-A</string>
          <string>myapp.local</string>
          <string>127.0.0.1</string>
        </array>

        <key>RunAtLoad</key>
        <true/>

        <key>KeepAlive</key>
        <true/>

        <key>StandardOutPath</key>
        <string>/tmp/myapp-mdns.out</string>

        <key>StandardErrorPath</key>
        <string>/tmp/myapp-mdns.err</string>
      </dict>
    </plist>
  1. Carregar o serviço

    launchctl load ~/Library/LaunchAgents/com.local.myapp.mdns.plist

  2. Para testar imediatamente:

    launchctl start com.local.myapp.mdns


🎯 Resultado Esperado

Após login do usuário:

  • O processo dns-sd -A myapp.local 127.0.0.1 inicia automaticamente.
  • O registro mDNS permanece ativo.
  • ping myapp.local resolve para 127.0.0.1.

⚠️ Observações Técnicas

  • dns-sd -A exige processo persistente.
  • KeepAlive garante reinício automático se o processo encerrar.
  • O serviço roda apenas para o usuário atual (não é global).
  • Funciona integralmente sem privilégios administrativos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment