diagnos
Biblioteca Python para o cofre: importe, toque em `vault.patients` e o desbloqueio acontece sozinho — cifrado no seu processo, do início ao fim.
Dev Center
SDK em Python, CLI e uma API REST autenticada por mTLS — as chaves nascem e vivem só na memória do seu processo, e o servidor nunca vê nada além de texto cifrado.
Pacotes open source
Oferecemos um SDK em Python, uma CLI compatível com Windows, Mac e Linux, e uma API RESTful pronta para ambiente de contêiner ou Kubernetes — tudo mantendo a criptografia de ponta a ponta (E2E), e tudo como código aberto sob licença Apache 2.0.
Biblioteca Python para o cofre: importe, toque em `vault.patients` e o desbloqueio acontece sozinho — cifrado no seu processo, do início ao fim.
O SDK inteiro, direto no terminal: `diagnos login` cuida do enrollment, e os comandos de patients, exams e files seguem sem sair do shell.
Uma API REST fina sobre o mesmo SDK, para times que falam HTTP em vez de Python — autenticada só por certificado mTLS.
A licença permite uso comercial, modificação e redistribuição livres, com concessão expressa de patente — a única exigência é preservar o aviso de copyright e sinalizar as mudanças que você fizer. Não prometemos suporte, roteiro público nem processo de aceitação de contribuições: é código aberto, não um produto com contrato de suporte.
Mãos à obra
Escolha o pacote e o método de instalação — os comandos abaixo são exatamente os que os READMEs do repositório verificam.
Todo comando abaixo precisa de um DIAGNOS_API_TOKEN, emitido por um admin do workspace. Como obter
pip install diagnosfrom diagnos import Diagnos
with Diagnos() as vault:
for row in vault.patients.list():
patient = vault.patients.get(row.document_id)
print(patient.record.legal_name)pip install "diagnos @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/sdk"from diagnos import Diagnos
with Diagnos() as vault:
for row in vault.patients.list():
patient = vault.patients.get(row.document_id)
print(patient.record.legal_name)Compila o enclave em Rust durante a instalação — exige cargo e rustup no PATH.
git clone https://github.com/diagnos-tech/integration && cd integration
make sync
make checkCompila o enclave em Rust durante a instalação — exige cargo e rustup no PATH.
pipx install diagnos-clidiagnos logindiagnos --json patients list --group sg_oncology | jq '.items[].document_id'A sessão nunca é gravada em disco: sem OpenBao configurado, cada invocação nova faz o enrollment de novo.
pipx install "diagnos-cli @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/cli" \
--preinstall "diagnos @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/sdk"diagnos logindiagnos --json patients list --group sg_oncology | jq '.items[].document_id'A sessão nunca é gravada em disco: sem OpenBao configurado, cada invocação nova faz o enrollment de novo.
docker build -f apps/api/Dockerfile -t diagnos-api .docker run --rm -p 8443:8443 --cap-add=IPC_LOCK \
-e DIAGNOS_API_TOKEN=apikey-… \
-e DIAGNOS_API_MTLS_CA_FILE=/certs/clients-ca.pem \
-e DIAGNOS_API_TLS_CERT_FILE=/certs/server.pem \
-e DIAGNOS_API_TLS_KEY_FILE=/certs/server-key.pem \
-v $PWD/certs:/certs:ro diagnos-apiO --cap-add=IPC_LOCK deixa o enclave em Rust travar as chaves na RAM além dos 64 KiB padrão; sem ele, o contêiner sobe em modo best-effort.
cd apps/api/deploy/compose
cp .env.example .env
docker compose upSobe o OpenBao e a API juntos, no mesmo compose.
kubectl apply -k apps/api/deploy/k8sUma réplica só: a sessão do SDK é por processo. Escalar exige OpenBao e uma service account por réplica.
Controle de acesso
DIAGNOS_API_TOKEN identifica uma service account e o workspace dela, e é emitido por um administrador do workspace. Sozinho, ele não destrava nada — quem destrava é a aprovação humana dos três passos abaixo.
A referência completa é pública — acesse pelo repositório no GitHub ou pela documentação abaixo, sem pedir aprovação a ninguém. Para autenticar as chamadas, crie um DIAGNOS_API_TOKEN em Configurações → Contas de serviço, dentro do seu workspace.
ou escreva para [email protected]
Zero trust
Nenhum processo lê nada sozinho: o enrollment troca chaves e espera alguém aprovar — na hora, ou antes.