- Dev Center
- Documentação
- Primeiros passos
- Visão geral
Documentação
Construa sobre o cofre diagnos
SDK, CLI e API REST zero-knowledge para o cofre diagnos: pacientes, exames e arquivos cifrados no seu processo antes de chegarem à rede.
Escolha seu pacote
- SDK diagnos O SDK Python do diagnos: acesso zero-knowledge a pacientes, exames e arquivos, com chaves guardadas num enclave de memória em Rust.
- CLI diagnos-cli O cofre diagnos zero-knowledge no seu terminal, construído sobre o SDK, com saída JSON e códigos de saída estáveis.
- API REST diagnos-api Uma fachada REST em FastAPI sobre o SDK diagnos para sistemas que falam HTTP, autenticada só por TLS mútuo.
Nota
Situação: prévia 0.1.0. Toda superfície — enrollment, sessões, assinatura de requisições, pacientes, exames, arquivos e pastas — fala o protocolo atual do cofre e é verificada contra ele pelos testes de contrato. Limites conhecidos, e as questões ainda em aberto do lado do cofre, estão em docs/COMPATIBILITY.pt-BR.md.
Nota
Ainda não está no PyPI. Até o primeiro release, instale do código-fonte — Instalação tem os comandos, e o toolchain Rust que o build precisa.
Primeiros passos
- Início rápido De um token de service account ao primeiro paciente e arquivo cifrados em cinco minutos, com o SDK Python ou a CLI diagnos.
- Instalação Instale o SDK, a CLI ou a API REST do diagnos: pelo PyPI, do código-fonte com Rust, ou como imagem Docker, mais o extra do OpenBao.
- Conceitos Workspaces, service accounts, security groups, documentos, versões, rascunhos e nós: o modelo por trás de toda chamada ao diagnos.
- Autenticação Como um processo diagnos ganha acesso: o token da service account, o link e o código de enrollment e a aprovação que concede grupos.
Referência
Para ir além
- Implantando o diagnos-api Implante o diagnos-api com Docker ou Kubernetes: ambiente, material de mTLS, auto-unseal com OpenBao e chaves travadas na RAM.
- Modelo de segurança O modelo de ameaça do diagnos: o que o cofre vê e não vê, o que o SDK protege na memória e os compromissos que você escolhe.
- PROTOCOL — o contrato entre o SDK e o cofre O contrato de fio normativo entre o SDK diagnos e o cofre: identidade, relógio, assinaturas, enrollment, envelopes e erros.
- Como contribuir Como contribuir com o diagnos integration: setup com uv e Rust, as checagens da CI, convenções de código e o checklist de pull request.
Começando#
1. Consiga um token. Um admin do workspace emite um token de service account no app web do diagnos:
export DIAGNOS_API_TOKEN="apikey-…"
2. Faça o enrollment. A primeira execução imprime um link e um código de 6 dígitos; um admin aprova no app web e escolhe quais security groups este processo pode ler.
from diagnos import Diagnos
with Diagnos() as vault: # faz enrollment na entrada: imprime o link de aprovação + código
print(vault.workspace_id)
print(vault.security_groups) # os grupos que o admin concedeu
diagnos login # o mesmo enrollment, pelo terminal
diagnos status # token, OpenBao e versão do SDK
3. Use. Pacientes, exames e arquivos pendem do mesmo objeto — vault.patients, vault.exams, vault.drives. O
início rápido vai daqui até o primeiro paciente e o primeiro arquivo cifrados.
As chaves privadas nunca saem do processo e nada é gravado em disco, então o próximo processo precisa de uma nova aprovação — isso é o desenho, não uma limitação. Autenticação mostra o enrollment inteiro, e Sessões como servidores reiniciam sem humano.
O que vem de graça#
- 🔐 Ponta a ponta por padrão — registros e arquivos são cifrados no seu processo; o cofre vê ciphertext, requisições assinadas e URLs pré-assinadas. Exatamente o que ele vê.
- 🛡️ Híbrido pós-quântico — o enrollment usa X25519 + ML-KEM-768, então uma sessão gravada continua segura contra um adversário quântico futuro.
- 🧱 Chaves num enclave Rust — memória travada com
mlock, guard pages, fora de core dumps, zerada nofork()e ao descartar, nunca devolvida ao Python comobytes. Modelo de ameaça:apps/sdk/native/README.pt-BR.md. - 🔁 Retentativa e relógio resolvidos — retentativas idempotentes, sincronia de relógio com o cofre, exceções estáveis: Erros.
- 📐 Formatos de bytes travados —
docs/PROTOCOL.pt-BR.mdé normativo, e vetores de teste gerados da implementação de referência do cofre travam cada byte.
Servidores sem humano#
Uma aprovação humana a cada reinício serve num notebook; não serve num pod Kubernetes. Aponte o SDK para o
OpenBao e ele salva a sessão desbloqueada logo após o enrollment e a restaura a cada subida —
uma troca deliberada, explicada por inteiro antes de você
ligar. Manifestos prontos ficam em apps/api/deploy/: Docker Compose e Kubernetes,
com auto-unseal do OpenBao para AWS KMS, Azure Key Vault, GCP KMS, Transit, Shamir e chave estática.
Documentação#
| Comece aqui | Depois |
|---|---|
| Início rápido · Instalação · Conceitos | Autenticação · Sessões · Configuração |
| Pacientes · Exames · Arquivos | Erros · Modelo de segurança |
| Guia da CLI · Guia da API REST | Implantação · Protocolo · Compatibilidade |
O site de desenvolvedores publica estas mesmas páginas em /dev/docs, mais uma referência gerada a partir do código —
todo comando, rota e classe. Como a doc é construída e checada.
Portões de qualidade#
Todo badge acima é um workflow que você roda localmente com um comando.
| Badge | O que prova | Localmente |
|---|---|---|
| Unit tests | os três pacotes no CPython 3.11–3.13, mais o enclave Rust | make test |
| Coverage | cobertura de ramos combinada de diagnos, diagnos-cli e diagnos-api, com um piso que só sobe |
make cov |
| Contract tests | o SDK manda e lê exatamente o que o contrato Pact commitado diz (motor Rust pact_ffi) |
make contract |
| CI | lint (Python, Rust, docstrings bilíngues, documentação), mypy --strict, lockfile, e a doc: todo exemplo roda, a referência está em dia |
make lint types docs-check |
O contrato é guiado pelo consumidor: os testes do SDK gravam
contracts/diagnos-sdk-diagnos-vault.json, e o cofre verifica esse
mesmo arquivo contra o código real dele antes de implantar.
flowchart LR
SDK["Testes do SDK<br/>(mock do Pact, motor Rust)"] -->|gravam| C[("diagnos-sdk-diagnos-vault.json")]
C -->|repetido contra| V["vault.diagnos.health<br/>verificação do provider"]
Estrutura#
integration/
├── apps/
│ ├── sdk/ diagnos a biblioteca — tudo vive aqui
│ │ └── native/ diagnos._secure enclave de memória em Rust
│ ├── cli/ diagnos-cli `diagnos …` no seu terminal
│ └── api/ diagnos-api fachada REST (FastAPI), só mTLS
│ └── deploy/ compose · k8s manifestos prontos para rodar
├── contracts/ Pact contrato do consumidor com o cofre + os testes dele
├── docs/ guides/ a documentação · reference/ gerada a partir do código
│ PROTOCOL.md formatos de bytes normativos · COMPATIBILITY.md · site.json
└── scripts/ docs/ as checagens por trás do `make lint`, do `make docs-check` e da CI
Como contribuir#
Você precisa de uv, Python 3.11–3.13 e, para construir o enclave do fonte, Rust stable.
git clone https://github.com/diagnos-tech/integration && cd integration
make sync # instala tudo e constrói o enclave Rust
make check # exatamente o que a CI roda: lint, tipos, testes unitários e de contrato, doc
make # lista todos os outros alvos
Leia o CONTRIBUTING.pt-BR.md antes do primeiro pull request. Vindo dos pacotes imgexam?
Veja o MIGRATING.pt-BR.md.
Segurança#
Achou uma vulnerabilidade? Por favor não abra issue pública — reporte em privado pelo GitHub Security Advisories. Detalhes no SECURITY.pt-BR.md.