Verifique você mesmo

signed by Lollyverify-yourself.htmlHTMLAI generatedgenerated by GeminiVerifique você mesmoGet the signed filepixels, not shapes10 KB

As páginas de privacidade e segurança do Lolly fazem afirmações: sem análise, sem rastreamento, arquivos que nunca saem do dispositivo, um único cookie em todo o sistema. Esta página é diferente: ela não pede que você acredite em nada disso. É uma lista de procedimentos, cada um com o comando ou caminho de clique exato e o resultado que você verá. Toda afirmação aqui é refutável em minutos, a maioria sem instalar nada.

Se alguma verificação nesta página não produzir o resultado mostrado, isso é um bug ou uma promessa quebrada. Reporte de qualquer forma, e vamos tratar com a gravidade que uma promessa quebrada merece.

Veja funcionando, em dez segundos

Antes dos procedimentos, o resultado. Abra /verify e solte um arquivo nele - sem upload, sem conta, sem esperar por um servidor. Aqui está verificando a tempestade de Queensland gerada da nossa página de posicionamento sobre IA: uma imagem do Gemini que o Lolly abriu, redimensionou e exportou. Cada selo abaixo foi calculado no dispositivo, a partir dos próprios bytes do arquivo.

Verify em uma tela largura de telefone - a imagem da tempestade, um veredito verde Made with Lolly e os selos de credencial intacta e bytes inalterados empilhados abaixo delasigned by Lollyvector SVGAI generatedVerifique você mesmoGet the signed file147 paths~9.4k nodes72 groups2 images254 KBVerify em uma tela largura de telefone - a imagem da tempestade, um veredito verde Made with Lolly e os selos de credencial intacta e bytes inalterados empilhados abaixo delasigned by Lollyvector SVGAI generatedVerifique você mesmoGet the signed file147 paths~9.4k nodes72 groups2 images254 KB

O veredito não é um único selo, mas uma pequena pilha deles, cada um um fato independente:

E todo o histórico viaja com o arquivo. Nove etapas sobrevivem aqui - cinco que o Google registrou ao gerar e marcar com watermark a imagem, depois quatro que o Lolly registrou ao abrir, marcar e converter a cópia nesta página - lidas diretamente dos bytes, no seu dispositivo, e renderizadas como uma linha do tempo. É a mesma imagem, verificada da mesma forma, que a linha do tempo C2PA na página de posicionamento sobre IA.

O histórico de alterações que o Verify lê de volta da imagem da tempestade - cinco etapas registradas pelo Google, depois quatro pelo Lolly, terminando no WebP nesta páginasigned by Lollyvector SVGVerifique você mesmoGet the signed file71 paths~8.9k nodes78 groups111 KBO histórico de alterações que o Verify lê de volta da imagem da tempestade - cinco etapas registradas pelo Google, depois quatro pelo Lolly, terminando no WebP nesta páginasigned by Lollyvector SVGVerifique você mesmoGet the signed file71 paths~8.9k nodes78 groups111 KB

Nada disso é a promessa de confiança, no entanto - isso é a demonstração. O resto desta página é a promessa de confiança: cada selo acima é reproduzível, e aqui está como você reproduz as garantias por trás deles.

No seu navegador, sem ferramentas necessárias

1. Observe a rede. Abra o lolly.tools, abra as DevTools do seu navegador (F12), mude para a aba Network e use uma ferramenta - digite uma URL em QR Code, mude cores, exporte um PNG. Toda requisição permanece em lolly.tools: o app shell, os próprios arquivos da ferramenta, os ativos do catálogo. Nenhum host de analytics, nenhum beacon de CDN, nenhum serviço de fontes, nenhum endpoint de "relatório de erros". O que você digita em uma ferramenta não aparece em nenhuma requisição - a renderização é local.

As exceções honestas - todas opt-in, iniciadas pelo usuário e visíveis na mesma aba Network quando acontecem: adicionar uma Google Font no editor de marca busca aquela família específica na Google, após um diálogo de consentimento que informa exatamente isso, uma vez, antes da primeira busca; clicar em um preset de perfil ICC de impressão busca aquele perfil no registro público do ICC em color.org; tocar o rádio integrado opcional transmite da estação; inserir um local no Meeting Planner consulta esse lugar no serviço de geocodificação da open-meteo para suas coordenadas e fuso horário, uma vez por cidade (as respostas são salvas no seu dispositivo), e o campo carrega esse aviso bem onde você digita; e o URL Screenshot necessariamente carrega a URL que você digitou - essa é sua função, e você observa isso acontecer. Uma ferramenta que declara uma capacidade de rede só pode buscar dos hosts que seu manifesto permite, e esse mecanismo é fail-closed; nenhuma ferramenta atualmente publicada declara uma, então a Content-Security-Policy imposta pelo navegador é a fronteira que de fato mantém a lista acima restrita aos seus hosts. A política de privacidade mantém a tabela canônica de tudo isso; sua regra permanente é que um contato de rede fora dessa tabela não acontece.

2. Desligue o cabo. Carregue o app e abra uma ou duas ferramentas, depois fique offline - modo avião, ou DevTools → Network → Offline. Recarregue. A galeria e cada ferramenta que você abriu continuam funcionando, incluindo renderização e exportação nos formatos que você usou - os arquivos de uma ferramenta e o codificador de um formato são armazenados em cache na primeira vez que você os usa, então use uma ferramenta uma vez online antes de testá-la offline. Essa é a verificação mais forte desta página: software que liga para casa não sobrevive ao corte do cabo.

3. Conte os cookies. DevTools → Application (Firefox: Storage) → Cookies → https://lolly.tools. A lista está vazia - o app não define nenhum cookie. Ou cole document.cookie no console: você obtém "". (O único cookie em todo o sistema, lolly_ca_state, dura no máximo dez minutos durante um login de identidade opcional - excluído no momento em que o login é concluído - é restrito a /api/ca e é HttpOnly: a política de privacidade o descreve com precisão.)

4. Leia seu próprio armazenamento. No mesmo painel Application: tudo o que o Lolly mantém é inspecionável diante de você - algumas dezenas de chaves simples de localStorage (tema, idioma, largura da barra lateral, configurações de som e visualização, além de uma cópia em cache do índice público do catálogo de ferramentas), e seus próprios documentos no IndexedDB. Cada valor é uma string legível ou JSON - nada é ofuscado, nada é codificado para dificultar a leitura. Profile → Clear all my data apaga tudo isso; assim como limpar os dados do site no navegador, porque não há cópia no servidor para sobreviver a isso.

5. Verifique se o contato de divulgação existe. /.well-known/security.txt responde com um bloco de contato RFC 9116, não uma página HTML.

Em um terminal

6. O endpoint de renderização está desativado em lolly.tools. O único recurso de servidor que colocaria entradas digitadas pelo usuário em uma URL - renderizações via hot-link - está desativado aqui até que o serviço mude para uma hospedagem própria da organização (a política de privacidade explica o motivo):

curl -s -o /dev/null -w '%{http_code}\n' 'https://lolly.tools/tool/qr-code.svg?url=test'
# 404

O interruptor é por implantação (LOLLY_DISABLE_RENDER_GET=1): no lolly.art, a instância pública de demonstração, as renderizações via hot-link estão deliberadamente ativas, então o mesmo teste lá retorna uma imagem - essa diferença é a flag funcionando, não uma inconsistência.

7. A superfície do servidor é enumerável. Server Surface lista cada rota do lado do servidor que existe, com a regra permanente de que um endpoint fora dessa página não faz parte do Lolly. Faça curl nelas; não há mais nada a encontrar.

No código-fonte

Tudo acima ainda poderia ser encenação se o código implantado fosse diferente do código público. Então verifique o código - a implantação é construída a partir do repositório público:

git clone --recurse-submodules https://github.com/lolly-tools/lolly.git
cd lolly

8. Nenhum rastreador, nenhum SDK de analytics, em lugar nenhum. Pesquise o código que é publicado - o engine, cada shell (incluindo a extensão do navegador, os overrides da bridge do Tauri e o service worker), as funções do servidor e os pacotes de ferramentas - pelos suspeitos de sempre:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' --include='*.html' \
  -e googletagmanager -e google-analytics -e posthog -e mixpanel -e hotjar \
  -e sentry.io -e segment.com -e '@vercel/analytics' \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output)

9. Nenhum resolvedor DNS de terceiros. A verificação SEAL do Verify nunca roteia buscas através de um provedor DNS-over-HTTPS - o app web simplesmente não tem resolvedor:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' \
  -e cloudflare-dns.com -e dns.google -e /dns-query \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output: outside this page and its built copies, the only place those
#  hostnames appear in the repo is tests/no-trackers.test.ts, the test that
#  bans them)

10. O serviço de certificados não retém nada. A CA de identidade não tem log de emissão - nem seu e-mail, nem um timestamp, nem um webhook. A ausência é verificável com grep:

grep -rn logIssuance services/ca api/ca
# (no output)

Imposto por testes, não por promessas

As três verificações de código-fonte acima não são uma auditoria única - elas estão fixadas na suíte de testes, então não podem apodrecer silenciosamente. tests/no-trackers.test.ts falha a build se:

Execute-os você mesmo no clone (Node 22.18+; não é necessário npm install para este arquivo):

node --test tests/no-trackers.test.ts
# ✔ no analytics or tracking SDK appears anywhere in shipped source
# ✔ no third-party DNS-over-HTTPS resolver is contacted
# ✔ the certificate service logs no personal data
# ✔ privacy policy states a controller, a legal basis and a right to complain

A suíte completa (npm install && npm test) executa mais alguns milhares, incluindo os testes adversariais de criptografia descritos em Security & Verification.

O que você não consegue verificar de fora - dito claramente

Uma página como esta conquista confiança nomeando seus próprios limites:

Se uma verificação falhar

Uma discrepância entre esta página e o comportamento observado é um relatório de segurança, e realmente preferimos ouvir sobre isso do que não: fitzy+security@suse.com, o botão Report a vulnerability em qualquer repositório lolly-tools ou o contato em /.well-known/security.txt. Divulgação coordenada e crédito ao relator são a política permanente - SECURITY.md tem os detalhes.