Ir para o conteúdo
NomaDev

Segurança

Segurança: o que fica onde

O NomaDev foi feito para que o seu trabalho nunca precise passar por nós. Esta página explica, ponto a ponto, onde ficam seu código, suas senhas e suas chaves, e o pouco que o nosso próprio serviço guarda.

Seus projetos nunca saem do seu computador

O servidor do NomaDev roda no computador ou VPS onde seus projetos já estão. Claude Code, git, a pré-visualização e os envios rodam todos lá.

Seu celular se conecta direto a essa máquina. Em casa, normalmente pelo Tailscale, uma rede criptografada ponto a ponto baseada em WireGuard; em um VPS, por HTTPS com o seu próprio certificado. Não há nenhum servidor nosso no meio, então não conseguiríamos ver seu código nem se quiséssemos.

Senhas e frases secretas ficam guardadas só no seu celular

Quando um envio precisa de uma senha de FTP ou SFTP, ou da frase secreta de uma chave SSH, você a digita no celular. Se escolher lembrar, ela é salva no Keystore do Android, o armazenamento criptografado protegido pelo hardware do celular; se não, vale só para aquela tentativa.

A senha vai para o seu computador só para aquele envio, fica na memória enquanto o envio acontece e nunca é gravada no disco — nem no seu computador nem por nós. Nossos servidores nunca a veem.

Desconectar o celular no app também apaga as senhas salvas nele.

As chaves SSH só mudam de lugar se você pedir

Para publicar por SFTP o servidor usa as chaves SSH que já estão no seu computador, na pasta do seu usuário. Elas não são copiadas nem transferidas para lugar nenhum: o celular só fica sabendo se a chave pede uma frase secreta.

A única exceção quem decide é você: para usar no terminal a chave de um destino, você pode copiá-la para o celular. Como funciona, logo abaixo.

O terminal SSH

O terminal se conecta do celular direto ao servidor, por SSH: a conexão é criptografada de ponta a ponta e não passa pelo seu computador nem por nenhum servidor nosso. Por isso funciona até com o computador desligado.

As chaves e senhas do terminal ficam só no celular, criptografadas com uma chave do Keystore do Android protegida pelo hardware. Para usá-las é preciso sua digital ou PIN, e o desbloqueio vale cinco minutos. Elas nunca vão para o backup do Android nem para o Google Drive, e só a parte nativa do app as usa, na hora de conectar.

Você pode gerar uma chave direto no celular: a parte privada nunca sai de lá, e no servidor você copia só a pública. Se preferir a chave que um destino já usa no computador, o app a copia uma única vez, depois da sua digital ou PIN, e só se o pedido chegar criptografado, por HTTPS ou por um proxy HTTPS na mesma máquina: numa conexão sem criptografia o computador recusa.

Na primeira vez que você se conecta a um servidor, o app mostra a impressão digital dele e a guarda; para os destinos já confirmados pelo computador, vale a dele. Se a impressão digital mudar, o app para e avisa, e para aceitar é preciso segurar o botão. Chaves e senhas só são desbloqueadas depois dessa confirmação.

O que passa pelo terminal fica na memória do celular, nunca no disco, e some quando você fecha a sessão. O terminal não aparece nos apps recentes nem nas capturas de tela, a menos que você permita. Em segundo plano as sessões ficam abertas no máximo pelo tempo que você escolher, e pela notificação você fecha todas com um toque.

Só os celulares que você autoriza

Para conectar um celular você precisa de um código mostrado no seu computador: 8 caracteres, de uso único, válido por 10 minutos e cancelado após 5 tentativas erradas. O QR leva o mesmo código.

Cada celular recebe então o seu próprio token de acesso. O servidor guarda só a impressão digital SHA-256 dele, nunca o token em si, então nem quem lê os arquivos do servidor consegue se passar pelo seu celular.

Em Configurações você vê todos os celulares conectados e pode desconectar qualquer um. Um celular desconectado não consegue mais se conectar; reiniciar o servidor fecha também uma conexão que ainda estivesse aberta.

Nada fica aberto sem autenticação

Cada requisição ao servidor precisa levar o token do celular. A conexão em tempo real começa com um ticket de uso único válido por 30 segundos, para que o token nunca acabe em um endereço ou em um log.

A pré-visualização do site que você está desenvolvendo nunca é pública: ela só abre pelo app, com um ticket de uso único trocado por um cookie privado.

Na primeira vez que você envia para um servidor FTPS ou SFTP, o app mostra a impressão digital do servidor e o NomaDev a guarda; se ela mudar depois, o app avisa antes de continuar.

O que nossos servidores guardam, e nada mais

Mantemos um único serviço: o que repassa as notificações para o seu celular, porque a chave do Firebase necessária para enviá-las não pode ir dentro do app.

Ele guarda o token de notificação do seu celular, ligado a um identificador aleatório que o seu computador usa para pedir uma notificação. Para cada notificação ele recebe o tipo (concluído, pergunta, permissão, erro, pré-visualização), o nome do projeto e o id da sessão; ele mesmo escreve o texto a partir de frases fixas e não guarda nada disso.

Ele nunca recebe código, mensagens de erro, senhas ou chaves. As estatísticas de uso, no app e no site, só começam se você aceitar: vão para o Google Analytics e nunca contêm código, arquivos ou nomes de projetos.

E o Claude?

O Claude Code roda no seu computador com a sua própria conta, e envia à Anthropic o que precisa para trabalhar no seu código — exatamente como quando você o usa no terminal. O NomaDev não acrescenta nem muda nada nessa troca. Veja a política de privacidade da Anthropic.

Perguntas sobre segurança

Vocês conseguem ver meu código?

Não. Seu celular fala direto com o seu computador, e o nosso único serviço cuida das notificações, que nunca contêm código.

Onde ficam guardadas minhas senhas de FTP e SFTP?

Só no Keystore do Android do seu celular, e só se você escolher lembrá-las. O computador as usa na memória para um único envio.

O terminal SSH passa pelo meu computador?

Não. O celular se conecta direto ao servidor. As chaves e senhas do terminal ficam só no celular, criptografadas e desbloqueadas com sua digital ou PIN.

E se alguém descobrir o endereço do meu servidor?

Sem o token de um celular conectado toda requisição é recusada, e para conectar um celular novo é preciso um código mostrado no seu computador.

E se eu perder o celular?

Desconecte-o a partir de outro celular conectado, em Configurações: a partir desse momento ele não consegue mais se conectar. Se o app estava aberto, reinicie também o servidor, que fecha a conexão que ele já tinha.