00:00:00Este é o Valor, uma ferramenta de código aberto para gerenciar variáveis de ambiente que permite
00:00:04que você nunca mais armazene segredos em texto simples no disco, resolvendo essas variáveis
00:00:10localmente ou via gerenciadores de senhas como 1Password, Bitwarden, AWS e outros, usando
00:00:16um esquema de tipos seguros. Ele injeta seus segredos na aplicação em tempo de execução, tornando
00:00:21seu arquivo .env seguro para IAs e até para subir no GitHub. Mas como isso funciona na prática
00:00:27e o que significa essa sintaxe estranha? Se inscreva no canal e vamos conferir.
00:00:31Quantas vezes você começou num novo emprego de dev, acessou o código, tentou rodar localmente
00:00:39e não funcionou, só para descobrir que faltava um arquivo .env que outro desenvolvedor tinha
00:00:45ou que estava em algum armazenamento criptografado? Você tem que repetir esse processo
00:00:50toda vez que o .env é atualizado. É este problema que o Valor resolve, além de evitar
00:00:56que agentes de IA com injeção de prompt acessem segredos indevidos. Vamos ver como funciona.
00:01:02Aqui tenho um pequeno projeto que gera artigos a partir de vídeos do Twitter, usando
00:01:06o Whisper da OpenAI para transcrever e o Claude para escrever o texto.
00:01:12Mas começaremos pelo simples: usar o Valor para mudar o número da porta. Com o Valor
00:01:17instalado, devemos ter um arquivo de esquema .env, que está vazio. Ele será a fonte
00:01:23de verdade das nossas variáveis e pode ser enviado publicamente ao GitHub.
00:01:28Vou começar adicionando uma variável simples “appenv” e definirei seu valor como
00:01:33“testing”. Agora, em outra aba, rodo “varlock load” para validar o esquema. Veja que
00:01:39ele leu nossa variável de ambiente e a marcou como sensível. Isso acontece
00:01:43porque no Varlock todas as variáveis são sensíveis por padrão, mas podemos mudar isso.
00:01:48Neste arquivo, vou adicionar nosso primeiro decorador, que será um decorador de raiz (root),
00:01:52pois afetará todas as variáveis do arquivo. Definirei “default sensitive” como false.
00:01:56Note que a sintaxe usa uma hashtag na frente, e variáveis de raiz costumam ser separadas
00:02:02por uma linha. Este arquivo usa uma linguagem específica (DSL) chamada mspec,
00:02:08que é uma especificação aberta do time Varlock. Se eu validar o esquema de novo,
00:02:14poderemos ver o valor da variável, pois ela não é mais considerada sensível.
00:02:19Mas podemos fazer coisas mais legais, como dar um tipo à nossa variável. Vou
00:02:24definir o tipo como string; tudo continua funcionando, mas se eu mudar para
00:02:29number, recebemos um erro porque o sistema esperava uma string. Também posso
00:02:33usar o decorador “required” e remover este texto. Ao verificar o arquivo, temos um erro
00:02:39porque falta um valor. Esses são decoradores de item. A lista completa deles
00:02:44e de tipos disponíveis está na documentação do Varlock. Vamos adicionar outra
00:02:50variável chamada “port” com o valor 3002. Vou definir seu tipo como “port”
00:02:55e, aqui em cima, voltarei para sensível e mudarei a primeira de volta para string.
00:03:01Agora ele detectou ambas as variáveis e ocultou os valores por serem sensíveis.
00:03:05Mas como levamos esses valores para a aplicação? Basta rodar
00:03:10“varlock run” seguido do script que inicia o projeto. Se olharmos o package.json,
00:03:15ele carrega a configuração, a resolve e a injeta nas nossas variáveis de ambiente.
00:03:21pelo comando vite, ele deve carregar a configuração, resolvê-la e então injetá-la em nossas variáveis
00:03:27Foi o que aconteceu: a porta agora é 3002, o que funciona no nosso código
00:03:33porque ele verifica primeiro a variável de porta injetada pelo Varlock.
00:03:38Isso não serve só para JavaScript; o Varlock funciona em qualquer projeto, como
00:03:43Python, Go ou Rust. Tudo deve funcionar como esperado. E se não quiser
00:03:48instalar via npm, existe o Varlock CLI que funciona igual. Tudo certo para variáveis
00:03:54locais, mas vamos ver como buscá-las no 1Password em vez de usar
00:03:59variáveis locais do shell para as chaves de API da OpenAI e da Anthropic.
00:04:05Eu não uso o 1Password pessoalmente; criei uma conta de teste para o vídeo, mas
00:04:11como podem ver, criei um novo cofre (vault). Isso é importante e explicarei depois.
00:04:16Neste cofre temos dois itens: a chave da OpenAI e a da Anthropic. Não me importo
00:04:24em mostrar pois são fictícias; se eu revelar, verão que não são chaves reais.
00:04:30Para levar esses valores ao esquema Varlock, primeiro instalamos o plugin do 1Password.
00:04:36Plugins no Varlock podem adicionar seus próprios decoradores de raiz e de item,
00:04:42então você verá alguns novos aqui, como este decorador “init one password”.
00:04:49Após instalar o varlock-onepassword, carregamos o plugin no decorador de raiz
00:04:55e rodamos o “init one password”. Tudo que preciso agora é do token,
00:05:01que posso carregar daqui. Para obter esse token, você deve conectá-lo a um novo cofre,
00:05:06não ao seu pessoal; procure em “developer service account” e siga os passos.
00:05:11Como vou deletar o token e a conta após o vídeo, não me importo em exibi-lo.
00:05:15Vou defini-lo como tipo “one password service token”, que é sensível e
00:05:21vem do próprio plugin. Você deve ter notado que este arquivo não tem
00:05:26realce de sintaxe; o time do Varlock criou uma extensão para o VS Code
00:05:32que suporta isso, mas ainda não há para Neovim. Talvez eu crie uma ou peça ao Claude.
00:05:37Agora criarei uma variável chamada “openai api key id” e, para buscá-la
00:05:43no 1Password, uso a função “op” seguida deste protocolo. Preciso do nome
00:05:49do meu cofre, que é “test”, o nome do item, “openai”, e o nome do campo,
00:05:55que conferindo aqui, vemos que é “credential”. Vou definir como sensível.
00:06:02Ao rodar “varlock load”, leva alguns segundos para buscar a chave no 1Password.
00:06:08e ao rodar “varlock load” novamente, ele traz os valores corretos.
00:06:14o valor aqui, algo como um dois três quatro, e se rodarmos varlock load novamente, ele obtém os valores corretos
00:06:20Aí está: nosso arquivo de esquema .env pronto para o commit. Mas eu sei o que
00:06:25está pensando: e esse token do 1Password? É seguro? Bom, sinceramente,
00:06:31se você desenvolve localmente e tem o 1Password, talvez já tenha o app Desktop
00:06:38ou a CLI. Nesses casos, pode usar a biometria para desbloquear em vez do token.
00:06:43O Varlock também suporta plugins para AWS, GCP e Bitwarden, além de muitas
00:06:52outras integrações como Vite, Next.js e Cloudflare Workers. Há diversos
00:06:57outros recursos que não cobri, como gerar tipos TypeScript do seu esquema,
00:07:03importar variáveis de outros arquivos e até ocultar dados sensíveis de logs
00:07:08e respostas HTTP, o que é um toque excelente. Há até um servidor MCP
00:07:15para ajudar seu agente de código a configurar o esquema .env automaticamente,
00:07:21além de uma GitHub Action para carregar e validar variáveis no seu CI/CD.
00:07:27Mas, por mais legal que o Varlock seja, há alguns problemas. Por exemplo, não
00:07:32funciona offline; se estiver codando num avião, terá que usar variáveis locais.
00:07:37E por falar em internet, há um pequeno atraso ao buscar senhas de provedores
00:07:41externos, então o script demora um pouco mais para iniciar. Também faltam
00:07:46alguns provedores como Dashlane, e eu notei um bug estranho: se eu usasse
00:07:53no esquema o mesmo nome de uma variável de ambiente do meu shell local,
00:07:59ele usava a local em vez da do 1Password. Mas o Varlock está em desenvolvimento
00:08:05ativo e tenho certeza que muitos desses pontos serão resolvidos. De qualquer
00:08:10forma, o produto hoje já é incrivelmente útil para mim e pretendo usá-lo em
00:08:16todos os meus projetos paralelos. Talvez até substitua meus arquivos de shell
00:08:21pelos esquemas do Varlock se houver um jeito; espero que sim, pois não quero
00:08:26agentes raspando minhas informações.