Apêndice — Localizações de ficheiros, portas e ambiente

Este apêndice reúne os factos concretos dispersos pelo resto do manual em tabelas de referência: localizações em disco, portas de rede, variáveis de ambiente e argumentos de arranque, e um guia rápido da VM convidada. Tudo aqui está associado à versão distribuída (versão 4.3.0, ID de pacote io.bromure.agentic-coding). Para os comandos que leem e escrevem estes valores, consulte Automatização e a CLI; para o que é criado no momento da instalação, consulte Instalação.

Marcadores de posição usados abaixo: <uuid> é o identificador de um espaço de trabalho, <version> uma versão fixa de uma ferramenta, <org>--<name> um repositório de modelos e <host-UUID> um anfitrião remoto guardado.

Localizações em disco

Tudo o que a aplicação possui reside sob um único diretório de suporte, mais um punhado de ficheiros fora dele e alguns itens do Keychain. As tabelas abaixo estão desduplicadas e agrupadas; um caminho terminado em / é um diretório.

O diretório de suporte

A raiz de suporte da aplicação é ~/Library/Application Support/BromureAC/. Os caminhos abaixo são relativos a ela.

CaminhoContém
base.imgA imagem base Ubuntu 24.04 a partir da qual cada espaço de trabalho é clonado (24 GB lógicos, ~6–8 GB físicos).
efivars.binArmazém de variáveis EFI com que a imagem base arranca.
base.versionCarimbo da versão da imagem instalada, p. ex. 200 ou 200.1.
image-state.jsonProveniência da imagem e os UUIDs dos passos de pós-instalação aplicados.
img-catalog.jsonCópia em cache do catálogo de imagens transferido.
browser-img-catalog.jsonCatálogo em cache para a imagem do navegador incorporado.
catalog.jsonManifesto do catálogo remoto em cache para modelos de inferência locais.
base.img.partial, base.img.gz.partial, efivars.partialFicheiros de instalação transitórios; a sua presença significa que uma instalação está em curso ou foi interrompida.
alpine-vmlinuz, alpine-initramfs, alpine-initramfs-shimmedFicheiros do instalador netboot Alpine em cache, usados pela compilação local.
browser/A cópia própria da AC da imagem do navegador Alpine/Chromium (linux-base.img, vmlinuz, initrd) quando a cópia do Bromure Web está ausente.
browser-profiles/<uuid>/image/profile.imgDisco de perfil Chromium persistente e encriptado ("Manter sessão iniciada nos sites").
ca/cert.pem, ca/key.pemA CA raiz do Bromure Agentic Coding por instalação (modo da chave 0600). Elimine o diretório ca/ para a rodar.
control.sockSocket de controlo Unix, exclusivo do proprietário (0600), sobre o qual a CLI e o plano de controlo comunicam por HTTP.
profile-macs.jsonAssociações MAC determinísticas por espaço de trabalho.
dhcp-leases.sqliteConcessões DHCP persistentes para o switch NAT partilhado.
default-ssh/id_ed25519.raw, default-ssh/id_ed25519.pubPar de chaves SSH predefinido partilhado, copiado para cada novo espaço de trabalho.
profile-template.json, profile-template.encO modelo "Predefinições" das Preferências que os novos espaços de trabalho herdam (mantido fora de profiles/ para nunca aparecer no seletor).
automations.jsonAutomatizações agendadas mais o histórico de execuções (máx. 1000 registos), próximos horários de disparo e marcas de nível máximo do sondamento de eventos.
grid-layout.jsonAdesão à Grelha de Terminais.
engine-master.keySegredo mestre de 32 bytes para as chaves do motor de inferência local por VM.
engine-spawn.jsonConfiguração de arranque dos processos-filho do motor de inferência local (modelos, orçamento de memória, porta).
fake-salt.binSalt de 32 bytes por instalação para derivar tokens falsos (0600). Eliminá-lo roda todos os falsos neste Mac.
secrets-master.keyChave mestra AES-256 de recurso (0600), usada apenas quando o Keychain de Proteção de Dados está inacessível.
claude-subscription.enc, codex-subscription.enc, grok-subscription.encArmazéns OAuth de subscrição, encriptados com AES-GCM e propriedade do anfitrião (predefinição partilhada mais substituições por espaço de trabalho), 0600.
cloudflared/<version>/cloudflaredBinário cloudflared fixo e verificado por checksum, com um symlink current ao lado.
ghostty/Configurações de terminal geradas (base mais por espaço de trabalho).

Armazenamento por espaço de trabalho

Cada espaço de trabalho é um diretório autónomo em profiles/<uuid>/ sob a raiz de suporte. Consulte Espaços de trabalho e Conceitos para saber como são utilizados.

Caminho (sob profiles/<uuid>/)Contém
profile.jsonDefinição do espaço de trabalho, incluindo o bloco de política supplyChain; as chaves de API do socket.dev e do Delpi são guardadas aqui, do lado do anfitrião, e nunca copiadas para a VM. Apenas os campos não predefinidos são escritos.
secrets.encSegredos do espaço de trabalho encriptados com AES-GCM (chmod 600).
disk.imgDisco de sistema — um clone copy-on-write APFS de base.img.
home.imgImagem ext4 esparsa que contém /home/ubuntu (modelo de home moderno).
home/Diretório home virtiofs legado (espaços de trabalho anteriores à atualização).
boot-home/Home de arranque minúscula partilhada em arranques com modelo ext4.
home.pre-ext4/Cópia de segurança da home mantida após a atualização de armazenamento.
checkpoints/, checkpoints/home/Clones de reversão de disco e de home comprovados no arranque.
vm.stateInstantâneo da RAM da VM suspensa.
tabs.jsonDisposição de separadores guardada, respeitada apenas quando existe vm.state.
machine-identifier.binIdentidade de máquina VZ persistente (necessária para restaurar uma VM suspensa).
compromised.flagMarcador de limpeza-no-próximo-arranque definido após a deteção de uma fuga de credenciais.
meta-share/Partilha de configuração do convidado, só de leitura e por arranque (api_key.env, proxy.env, o certificado da CA, agentes, configurações MCP).
outbox/Partilha de eventos convidado→anfitrião gravável e por arranque.
agent/ (e agent/imported/), ssh/Material de chaves SSH por espaço de trabalho; as chaves importadas residem em agent/imported/, ssh/ é o diretório legado.

Modelos e detetores

Caminho (sob a raiz de suporte)Contém
models/<org>--<name>/Pesos dos modelos de inferência MLX transferidos (disposição plana por repositório).
models/<org>--<name>/.incompleteSentinela de transferência em curso ou interrompida.
Models/prompt-injection/Recursos do detetor PromptGuard (model.onnx, ficheiros de tokenizador, substituições opcionais em bromure-injection.json).
Models/claudemd-guard/Recursos do detetor de ficheiros de regras ModernBERT.
traces/YYYY-MM-DD/<sessionID>.jsonlMetadados de rastreio por sessão, um registo JSON por linha.
traces/YYYY-MM-DD/<sessionID>/<recordID>.req.enc, .res.encCorpos de pedido/resposta capturados, encriptados com AES-GCM (0600).

Inscrição, acesso remoto e o cliente nativo

Caminho (sob a raiz de suporte)Contém
managed/install.jsonIdentidade de inscrição: ID de instalação, slug do espaço de trabalho, utilizador, URL do servidor, nome do dispositivo, momento de inscrição.
managed/leaf.crtCertificado folha de mTLS (PEM, inspecionável).
managed/leaf.serialApontador para a entrada do Keychain que contém a chave privada da folha atual.
managed/ca.crtCertificado da CA da organização do espaço de trabalho (PEM).
managed/healthEstado de saúde da inscrição persistido (ok / tokenRejected / revoked).
remote/hostkey_ed25519, remote/hostkey_ed25519.pubChave de anfitrião do servidor SSH incorporado (modo do diretório 0700, chave 0600).
remote/authorized_keysChaves públicas autorizadas a passar pela porta de entrada SSH (0600).
remote/overlay-keySubstituição opcional de sobreposição-de-acordes para o menu remoto SSH.
remote-client/id_ed25519, .pubPar de chaves de cliente SSH do cliente nativo (comentário bromure-ac-fatclient).
remote-client/known_hostsFixações de confiança-na-primeira-utilização das chaves de anfitriões remotos.
remote-client/hosts.jsonServidores remotos guardados ("Servidores Recentes").
remote-client/hosts/<host-UUID>/grid-layout.json, automations.jsonPersistência do espelho por anfitrião, para que uma grelha remota nunca sobrescreva a local.

Nota: A subárvore remote-client/ desloca-se com CFFIXED_USER_HOME, que é a forma como duas instâncias isoladas podem ser executadas lado a lado para testes.

Fora do diretório de suporte

CaminhoContém
~/Library/LaunchAgents/io.bromure.agentic-coding.boot.plistLaunchAgent de arranque-ao-iniciar-sessão, escrito quando qualquer espaço de trabalho ativa "Iniciar esta VM ao iniciar sessão".
<app>/Contents/Library/LaunchDaemons/io.bromure.fatclient-tunnel.plistDaemon de túnel privilegiado incorporado, registado a pedido via SMAppService.
/var/run/io.bromure.fatclient-tunnel.sockSocket do daemon de túnel privilegiado (criado pelo root, chmod 600, atribuído ao utilizador da consola).
/tmp/bromure-ac-cm-<first-12-of-host-UUID>Socket SSH ControlMaster por anfitrião (mantido em /tmp porque o caminho de suporte excede o limite de comprimento AF_UNIX).
/tmp/bromure-repair.logRegisto de depuração do proxy de reparação de inferência local (apenas com BROMURE_REPAIR_DEBUG).
/usr/local/bin/bromure-cliSymlink opcional da CLI para o binário da aplicação, oferecido uma vez no primeiro arranque.
<NSTemporaryDirectory>/bromure-ac-agent-<pid>.sockSocket privado do ssh-agent do lado do anfitrião do Bromure.
$TMPDIR/bromure/session-<uuid>.img (e -aux.img)Clones copy-on-write efémeros da VM do navegador, eliminados ao desmontar.
<app temp dir>/bromure-files/<profile-id>/Cache de transferências para ficheiros do convidado abertos a partir do navegador de ficheiros.
~/Library/Application Support/Bromure/Diretório de suporte do Bromure Web; a AC lê a sua imagem do navegador daqui quando presente.
~/.cache/bromure-ghosttyCache da cadeia de ferramentas Zig usada apenas ao compilar a framework do terminal a partir do código-fonte.

Itens do Keychain e domínio de defaults

Os segredos que têm de sobreviver com proteção ao nível do SO residem no Keychain do macOS, não em disco.

Serviço do KeychainContaContém
io.bromure.agentic-coding.master-keyv1A chave mestra AES-256 do cofre de segredos (Keychain de Proteção de Dados).
io.bromure.agentic-coding.ssh-key-passphrases<profileUUID>/<filename>Frases de acesso para chaves SSH importadas.
io.bromure.agentic-coding.managed-installinstall-token, leaf-cert-key-<serial>Token portador de inscrição e chaves privadas de folha por número de série.

Todos os UserDefaults da aplicação residem no domínio io.bromure.agentic-coding (lidos e escritos com defaults read/defaults write).

Portas de rede e sub-redes

Portas TCP e de loopback

O Bromure Agentic Coding não abre por predefinição quaisquer portas de entrada fixas. Os dois serviços opcionais abaixo estão desligados até os ativar; os restantes são apenas de loopback e dinâmicos ou internos.

PortaFinalidadeVinculada onde
9223 (predefinição)API HTTP de automatização e backend bromure-cli mcp. Desligada por predefinição (automation.enabled); escolhida uma acima da 9222 do produto de navegador para que ambas as aplicações possam ser executadas lado a lado. Serve GET /health.127.0.0.1 (configurável via automation.bindAddress; vinculações não-loopback são não autenticadas e desaconselhadas).
2222 (predefinição)Porta de entrada opcional de acesso remoto SSH. Desativada por predefinição; configurável para qualquer porta ≥ 1024.0.0.0.0 por predefinição (configurável via remoteAccess.bindAddress).
2850028599Ouvinte de callback OAuth do MCP (http://127.0.0.1:<port>/callback).127.0.0.1.
dinâmicaMotor de inferência local, alocado no primeiro arranque para evitar colisão com o Ollama/LM Studio na 11434.127.0.0.1 (nunca 0.0.0.0).
dinâmicaProxy de reparação de chamadas de ferramentas da inferência local.127.0.0.1.
efémeraEncaminhador SOCKS5 por anfitrião remoto usado pelo painel do navegador do cliente nativo.Vinculada a 0.0.0.0 mas filtrada por par para loopback mais 192.168.127.x.

Dois pontos de extremidade de loopback existem dentro do convidado, não no Mac: 127.0.0.1:8080 (o proxy HTTP(S) na VM que cada shell exporta como HTTPS_PROXY) e 127.0.0.1:11434 (onde o motor de inferência local no anfitrião aparece, via uma ponte vsock).

A própria instalação não abre portas TCP; o proxy de pacotes da compilação da imagem base vincula uma porta localhost efémera por compilação.

Sub-redes de rede virtual

Sub-redeFinalidade
192.168.64.0/24Sub-rede NAT predefinida para as VMs dos espaços de trabalho (gateway .1, pool DHCP .2.254, concessões de 24 h). Realocada automaticamente se a LAN do Mac já a usar.
192.168.65.0/24192.168.126.0/24Intervalo para o qual as instâncias do Bromure Web se realocam, mantendo a AC e a Web sem colidir.
192.168.127.0/24Sub-rede fixa da VM do navegador local do cliente nativo (gateway .127.1), para que o gateway seja previsível.
100.64.<n>.0/24Sub-redes de alias CGNAT para colisões de sub-redes de frota — implementadas e testadas, mas ainda não ligadas ao caminho de execução (um único anfitrião remoto é a configuração suportada).
10.98.<unit>.0/30Redes de ligação ponto-a-ponto usadas pelo daemon de túnel utun privilegiado.

Pontes vsock anfitrião↔convidado

O anfitrião e o convidado comunicam por sockets virtio (vsock), que não têm vinculação IP — são canais numerados entre o anfitrião (CID 2) e cada convidado. São canalizações internas, listadas aqui para diagnóstico.

Porta vsockPonte
5800Agente de execução de shell — alimenta bromure-cli exec, a rota de execução do socket de controlo e o painel do explorador de ficheiros.
5010Relé de callback OAuth de loopback (entrega redirecionamentos OAuth de volta às CLIs na VM).
5830Lado do anfitrião do servidor MCP do navegador incorporado (o shim stdio do convidado liga-se para fora).
8443Proxy MITM HTTPS — a saída do convidado.
8444Ponte do ssh-agent (suporta SSH_AUTH_SOCK).
8445Auxiliar credential_process da AWS.
8446Agente de token de subscrição Claude e a ponte de inferência local no anfitrião (convidado 127.0.0.1:11434).
8447Agente de token de subscrição Codex/ChatGPT.
5000Agente de configuração da VM do navegador (configuração JSON anfitrião→convidado na reivindicação).
5100Ponte de transferência de ficheiros da VM do navegador (trama máxima de 16 MB, ficheiro máximo de 10 GB).
5200Ponte do Chrome DevTools Protocol da VM do navegador (capturas de ecrã, avaliação).
5300 / 5400Emissor de ligações / webcam da VM do navegador.
5810Ponte de separadores nativos da VM do navegador.
5900Ponte de rastreio de rede da VM do navegador.

Variáveis de ambiente e argumentos de arranque

Estes influenciam a aplicação no arranque. A maioria destina-se a depuração, testes ou compilação a partir do código-fonte; a coluna Público indica a quem cada um se destina. Defina uma variável de ambiente antes de iniciar o binário, ou passe um argumento de arranque a seguir a ele.

NomeEfeitoPúblico
-AppleLanguages "(fr)" (arg. de arranque)Substituição padrão de localidade do macOS; força o idioma da interface. Removido antes da análise de argumentos para que os reinícios que forçam a localidade funcionem.Utilizador final
BROMURE_DEBUG_CLAUDEDesbloqueia os pontos de extremidade de depuração na API TCP de automatização (/app/state, exec, /vms, /debug/ui-shot, /detect/prompt-injection), permite que segredos viajem pelas pontes de perfil-JSON AppleScript/MCP e é necessário para as ferramentas de VM de bromure-cli mcp --debug.Utilizador avançado / depuração
BROMURE_AC_DEBUG=1Depuração em stderr com carimbo temporal para o motor de automatização, classificadores de injeção, verificador de regras e pipeline de rastreio.Depuração
BROMURE_CLI_DEBUGDiagnósticos verbosos de ligação ao socket de controlo em stderr para os comandos da CLI.Depuração (CLI)
BROMURE_REPAIR_DEBUGDiagnósticos de pedido/resposta do proxy de reparação de inferência local, anexados a /tmp/bromure-repair.log.Depuração (modelos locais)
BROMURE_INFER_DEBUGEstatísticas do motor por pedido (slot, tokens pré-preenchidos, TTFT, tok/s) em stderr.Depuração (modelos locais)
BROMURE_FATCLIENT_LOGRegisto em stderr sem buffer do cliente nativo.Depuração (remoto)
BROMURE_ATTACH_DEBUG=<path>Anexa também o registo do cliente nativo a um ficheiro.Depuração (remoto)
BROMURE_INJECTION_COREML=1Executa os classificadores de injeção no fornecedor CoreML/Neural Engine (predefinição CPU; o CoreML usa cerca de 5× a memória residente com igual precisão).Utilizador avançado
BROMURE_NO_COREMLDesativa à força o CoreML para os classificadores, mesmo que BROMURE_INJECTION_COREML esteja definido.Utilizador avançado
BROMURE_GPU_CACHE_GBLimite da cache de buffers da GPU MLX em GB (predefinição 4).Utilizador avançado (modelos locais)
BROMURE_KVBITS, BROMURE_KVBITS_START, BROMURE_CACHE_SLOTS, BROMURE_THINKINGAjuste da inferência local: bits de quantização da cache KV e limiar, slots de sessão da cache KV (1–8, predefinição 4) e desativação do raciocínio silencioso. Consulte Modelos locais.Utilizador avançado (modelos locais)
VISUAL / EDITOREditor usado por bromure-cli workspaces edit (recorre a vi).Utilizador final (CLI)
BROMURE_MANAGED_URLSubstitui a base da API bromure.io usada para inscrição, heartbeat e emissão de certificados.Administrador empresarial
BROMURE_FATCLIENT_OPENArranque puro do cliente nativo: ignora a janela de configuração inicial (não é necessária imagem base local) e suprime o pedido de symlink bromure-cli.Avançado / testes
BROMURE_IMAGE_CATALOG_BASEAponta as transferências de imagens para um catálogo local/de teste; desativa também a verificação de assinatura do catálogo. Apenas para uso em testes e pipelines.Teste / CI
BROMURE_INSTALL_BROWSER_IMAGE=1Transfere automaticamente a cópia da AC da imagem do navegador incorporado no arranque (o gatilho normal é o painel do navegador ou DefiniçõesNavegador).Teste / depuração
CODESIGN_IDENTITYIdentidade de assinatura do build.sh; se não definida, recorre a ad-hoc - (sem Gatekeeper, iCloud ou vmnet).Programador (compilação)
DEVELOPER_ID, APPLE_ID, TEAM_ID, APP_PASSWORDAssinatura Developer ID e notarização do package.sh. DEVELOPER_ID é obrigatório; o trio de notarização é opcional (sem ele resulta um DMG assinado mas não notarizado).Programador / editor
DRY_RUN=1, KEEP_PREVIOUS=1, KEEP_STAGING=1Interruptores do pipeline de publicação/ensaio de imagens.Editor

O motor também define variáveis internas para os seus próprios processos-filho (BROMURE_ENGINE_KEY, BROMURE_ENGINE_MASTER) e a VM de registo descartável define BROMURE_AC_REGISTER; estas não se destinam a ser definidas manualmente.

Chaves de UserDefaults (defaults write)

Definições persistentes no domínio io.bromure.agentic-coding. A maioria tem equivalentes na interface; as chaves vm.* e os controlos de programador são definidos com defaults write.

ChaveEfeitoPredefinição
automation.enabledAtiva a API HTTP de automatização em loopback.false
automation.portPorta da API de automatização.9223
automation.bindAddressEndereço de vinculação da API de automatização.127.0.0.1
remoteAccess.enabledAtiva a porta de entrada de acesso remoto SSH.false
remoteAccess.portPorta da entrada SSH (≥ 1024).2222
remoteAccess.bindAddressEndereço de vinculação da entrada SSH.0.0.0.0
remoteAccess.passwordAuth, remoteAccess.pubkeyAuthMétodos de autenticação SSH.ambos ligados
vm.homeImageGBTamanho aparente (visível pelo convidado) de uma nova imagem home ext4, em GiB (8–1024; esparsa, pelo que não custa nada à partida).64
vm.mtuLimitação do MTU da NIC do convidado — reduza-a em anfitriões VPN que descartam transferências do instalador.1280
vm.networkMode, vm.bridgedInterface, vm.dnsServersModo de rede do pool de navegador, interface em bridge e substituição de DNS do DHCP.modo NAT; os restantes não definidos
vm.extraChromeFlags, vm.chromeEnvExtraControlos de programador anexados ao arranque do Chromium da VM do navegador.não definidos
cloudflareTunnel.consentedConsentimento único para expor serviços HTTP via túneis rápidos da Cloudflare.false
cliSymlinkDeclinedDefinido quando escolhe "Não Perguntar Novamente" na oferta de symlink bromure-cli.false
ac.sidebarWidth, ac.filePaneOpenLargura da barra lateral e estado de abertura do painel de ficheiros persistidos.definido pela aplicação

Guia rápido da VM convidada

Dentro de uma VM de espaço de trabalho em execução é o ubuntu, um utilizador comum (com capacidade sudo) cuja home é /home/ubuntu. O anfitrião configura as montagens e o ambiente para que os gestores de pacotes, os agentes e o Git funcionem sem qualquer configuração dentro do convidado. Consulte Conceitos para a mecânica.

Pontos de montagem

CaminhoO que é
/home/ubuntuA sua home — a home.img ext4 (moderna) ou uma partilha virtiofs (legada).
/mnt/bromure-metaPartilha de configuração por arranque, só de leitura: api_key.env, proxy.env, o certificado da CA, agentes do convidado, configurações MCP, sugestões de hostname/MTU.
/mnt/bromure-outboxPartilha de eventos convidado→anfitrião gravável (ficheiros de evento de utilização única que o anfitrião lê).
/mnt/bromure-share-NPastas de projeto partilhadas (até 8), também com symlink na sua home como ~/<basename>.
/mnt/bromure-meta/bromure-browser-mcp.pyO shim stdio↔vsock do MCP do navegador gerado, colocado só de leitura em cada espaço de trabalho.
~/.bromure/pastes/Imagens coladas no terminal (limpas automaticamente após 7 dias).

Ambiente definido pelo anfitrião

VariávelValor / efeito
http_proxy, https_proxy, HTTPS_PROXYhttp://127.0.0.1:8080 — a ponte na VM que transporta todo o HTTPS do convidado para o proxy MITM do anfitrião.
NO_PROXYlocalhost,127.0.0.1,::1.
SSH_AUTH_SOCK/tmp/bromure-agent.sock — em ponte via vsock para o ssh-agent do anfitrião (apenas as chaves por espaço de trabalho e as explicitamente importadas são alcançáveis; o seu agente de início de sessão do macOS nunca é exposto).
Variáveis do pacote de CAA CA raiz de re-assinatura é confiada através das variáveis padrão do pacote de CA para node, python, go, rust, curl, deno e o SDK da AWS.
Chaves de API dos agentesANTHROPIC_API_KEY, OPENAI_API_KEY, XAI_API_KEY, GH_TOKEN, GITLAB_TOKEN, DIGITALOCEAN_ACCESS_TOKEN, LINEAR_API_KEY, as variáveis da AWS e quaisquer variáveis manuais/de base de dados — todos valores de marcador de posição; o anfitrião troca-os pelo segredo real na transmissão.
Variáveis de agente em modo localQuando um espaço de trabalho encaminha para um modelo local, o Claude Code vê ANTHROPIC_BASE_URL=https://bromure.llm, um ANTHROPIC_AUTH_TOKEN por VM, aliases de modelo definidos para a sentinela bromure-local e CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1.

Aviso: Todas as credenciais que o convidado consegue ler são um engodo. Um token falso limitado a um anfitrião que apareça num pedido destinado a um anfitrião diferente é a assinatura de exfiltração e aciona a deteção de comprometimento — nunca autentica nada.