Control plane multicloud e open source
Orquestre todas as nuvens de um só palco.
Descreva o ambiente uma vez: serviços, Postgres, cache, fila, storage, ingress e DNS. Associe cada recurso à conta e à região que fazem sentido para ele. Revise o plano, o resultado das políticas e uma estimativa do custo mensal. Depois o OrkStage aplica tudo com OpenTofu e continua de olho.
Alpha. A plataforma inteira está em fase de testes e validação. Funcionalidades e integrações com provedores são liberadas aos poucos, e as APIs ainda podem mudar. No roadmap: mini agentes de IA vinculados aos templates (segurança, FinOps, insights) que analisam planos e deploys apenas em modo leitura, usando a sua própria API key da Anthropic, OpenAI ou Gemini.
- Licença
- AGPL-3.0
- Hospedagem
- Sua infraestrutura
- Engine
- OpenTofu
$ ork scanScanned 38 of 214 files (91.2 KiB): walk 4 ms, scan 12 ms · terraform 6 · compose 1 · dockerfile 2Resources (7) ID TYPE PROVIDER IMPLEMENTATION CONFIDENCE network network aws vpc high api compute.container-service aws ecs-fargate high worker compute.container-service aws ecs-fargate medium database database.postgresql aws rds-postgres high cache cache.redis aws elasticache-valkey high ingress ingress aws alb medium dns dns aws route53 medium $ ork template pushCreated template shop 0.1.0 (DRAFT). Publish it in the console when reviewed. $ ork deploy --instance shop-staging --waitDeployment 3c1e9a52 queued for shop-staging.14:02:11 INFO [phase:validate] Template shop@0.1.0 valid; 8 policies passed, 0 warning(s).14:02:12 INFO [phase:plan] Plan: 7 to create, 0 to update, 0 to delete, 0 unchanged (risk low).14:02:13 INFO [network] Provisioning Amazon VPC "ork-acme-shop-staging-network" in aws/us-east-1…14:06:40 INFO [database] Provisioning Amazon RDS for PostgreSQL "ork-acme-shop-staging-database" in aws/us-east-1…14:14:02 INFO [phase:verify] All health and connectivity checks passed.Deployment 3c1e9a52 succeeded.
Saída resumida. Hoje você compila o CLI ork a partir do código; ainda não há binários assinados.
Como funciona
Template, plano, deploy e observação. Cada etapa deixa um artefato que você consegue ler.
Nada chega à nuvem antes de alguém revisar o plano. O worker aplica exatamente o plano que você aprovou, recurso por recurso.
01
Template
Um arquivo YAML descreve a intenção sem citar provedor: uma API com duas réplicas, um Postgres replicado entre zonas, um storage versionado. Os placement slots dizem quais nuvens cada parte pode usar. Você escreve uma vez e faz deploy quantas vezes quiser.
templates/multicloud-reference.yamlplatform/v1 placements: - name: primary providers: [aws, mock] - name: data providers: [aws, azure, mock] - name: storage providers: [aws, oci, mock]resources: - id: api type: compute.container-service image: catalog://sample-api replicas: 2 cpu: 0.5 memoryMiB: 1024 - id: database type: database.postgresql placement: data # bound per instance highAvailability: zone-redundant backup: { enabled: true, retentionDays: 7 }connectivity: - { from: api, to: database, protocol: postgres, mode: private-preferred }
02
Plano
O compilador resolve cada recurso para um serviço concreto da nuvem, define nome e tags, ordena o grafo de dependências e escolhe uma estratégia de conectividade para cada ligação. O plano sai agrupado por provedor, target e região.
Deployment planrisk: low Deployment Plan Instance: Acme Production AWS / aws-prod / us-east-1 CREATE Amazon VPC network CREATE Amazon ECR (private) registry CREATE Amazon ECS on Fargate api CREATE Amazon ECS on EC2 capacity worker CREATE Application Load Balancer ingress CREATE Amazon Route 53 + ACM certificates dns AZURE / azure-data / eastus CREATE Azure Database for PostgreSQL Flexible Server database OCI / oci-storage / us-ashburn-1 CREATE OCI Object Storage storage Cross-cloud CONFIGURE api → database (public-tls-allowlist) CONFIGURE worker → database (public-tls-allowlist) CONFIGURE api → storage (public-tls) Risk: low
03
Deploy
O OpenTofu executa o grafo de dependências de forma assíncrona, com um state separado para cada recurso. Ramos independentes rodam em paralelo e falhas transitórias são repetidas. Quando um recurso falha, só os recursos que dependem dele ficam de fora. Antes de alterar recursos que já existem, o worker roda um
tofu plande verdade, e um delete ou replace em produção espera aprovação.deployment 9b07c4e1 · eventsAWAITING_APPROVAL 14:21:03 INFO [phase:targets] aws-prod / us-east-1: 4 checks passed.14:21:05 INFO [phase:plan] api: 0 to add, 1 to change, 0 to destroy14:21:05 WARN [phase:plan] ingress: 1 to add, 0 to change, 1 to destroy — replace aws_lb_target_group.route[0]14:21:05 WARN [phase:plan] The provider plan deletes or replaces existing resources: production approval required.14:21:06 WARN [phase:approval] High-risk production change: waiting for approval.
04
Observação
Os health checks são consolidados na instância e em uma página de status. Quando um componente crítico falha, o OrkStage abre um incidente, avisa os responsáveis no console e por email e resolve o incidente quando o componente volta a ficar saudável.
Status · Acme Corp (private)updated 14:52 Degraded performance
- APIOPERATIONAL
- WorkersOPERATIONAL
- DatabaseDEGRADED
- StorageOPERATIONAL
Incident opened · database unhealthy
Critical resource unhealthy. Owners notified in the console and by email. Resolves automatically when health returns.
Placement multicloud
Coloque cada recurso onde ele faz mais sentido.
O placement é definido por recurso, e não por ambiente. Associe o slot data a uma subscription do Azure e o mesmo template vira multicloud. Associe todos os slots a uma conta AWS e ele volta a rodar em uma nuvem só. O template não muda.
Como dois recursos se conectam
O compilador escolhe a estratégia e mostra no plano. Nada é provisionado sem você ver.
- private-network
- Mesma conta e mesma região.
- private-peering
- Mesmo provedor, conta ou região diferente. Há custo de peering.
- public-tls-allowlist
- Entre nuvens, no modo
private-preferred: TLS em um endpoint público, com a origem liberada em allowlist. - unsatisfiable
- Entre nuvens, no modo
private-required. O plano falha até você mudar o modo ou o placement.
Status O provisionamento na AWS é real (OpenTofu, validado com MiniStack). Os adapters de Azure, Google Cloud, OCI e outros provedores estão em preview, atrás de feature flags, até serem validados em contas reais. Um simulador determinístico permite testar qualquer topologia sem conta, sempre sinalizado como simulado.
Governança
Planos que você confere antes de qualquer recurso existir.
Políticas, custo e aprovações fazem parte do plano, e não de uma reunião depois do fato. Templates customizados passam pelas mesmas verificações e não podem pular nenhuma.
Políticas, com todos os resultados à vista
- passno-public-database No database is publicly accessible.
- passno-public-storage Object storage blocks public access.
- passproduction-backups Production databases have backups.
- passencryption-required All resources support encryption.
- passallowed-regions All regions are approved.
- passmulti-cloud-entitlement Placement fits the plan.
- warncross-cloud-connectivity api → database crosses clouds via public-tls-allowlist.
Também entram na verificação: templates marcados como fora de produção, limite de réplicas e orçamento mensal.
Estimativa de custo aproximado
Preços de lista de um catálogo estático, sob demanda, por mês. É uma estimativa, nunca uma fatura.
| recurso | onde roda | USD/mês |
|---|---|---|
| database | Azure Flexible Server, HA | 55.39 |
| api | AWS ECS Fargate ×2 | 36.03 |
| ingress | AWS ALB | 22.27 |
| worker | AWS ECS on EC2 | 13.75 |
| registry, dns | AWS ECR, Route 53 | 1.50 |
| storage | OCI Object Storage | 0.26 |
| total aproximado | ≈ 129.20 | |
Aprovação onde ela importa
Mudanças em produção que apagam, substituem ou mexem em um banco de dados param em AWAITING_APPROVAL. O worker também lê o plano real do provedor, então uma substituição que o diff da plataforma não enxerga também pede aprovação. O resto segue, e o registro explica por que a aprovação não foi necessária.
Um audit log que ninguém edita
Cada mudança vira um evento de auditoria com autor, correlation id e diff. Ações feitas com uma API key identificam a chave. Um trigger no Postgres rejeita updates e deletes na tabela, então o histórico fica exatamente como aconteceu.
Operação
Feito para quem fica de plantão.
Do health check que falha até o email na caixa de entrada do responsável, cada elo da cadeia é automático e visível.
01
Saúde
A cada ciclo, o estado real é lido de novo no provedor e a saúde dos componentes se consolida na instância. Um componente crítico derruba a instância; os outros só a degradam.
HEALTHY · DEGRADED · UNHEALTHY
02
Incidentes
As regras de alerta são configuráveis, por health check ou por métrica. Elas abrem um incidente por recurso, com deduplicação e cooldown, e o resolvem quando o problema passa.
INVESTIGATING · RESOLVED
03
Página de status
Cada tenant tem uma página de status (privada, para membros ou pública) que traduz os recursos nos componentes que seus clientes enxergam: API, workers, banco de dados.
OPERATIONAL · PARTIAL_OUTAGE
04
Notificações
Owners e admins do tenant e a equipe da plataforma recebem avisos no console e por email. Webhooks assinados levam os mesmos eventos para os seus sistemas.
console · email · webhooks
Se alguém apagar um recurso direto no console do provedor, um probe ao vivo percebe que ele sumiu, a verificação falha na hora em vez de esperar, e o próximo deploy cria o recurso de novo.
Do seu repositório
Comece pela infraestrutura que você já tem.
O scan engine lê Terraform e OpenTofu, CloudFormation e SAM, Kubernetes e Helm, Docker Compose, Dockerfiles e manifestos de pacotes. Ele propõe um template OrkStage e mostra a evidência de cada recurso. Importe o relatório pela API ou pelo console e revise o rascunho antes de publicar.
$ ork import --tenant acmeScanned 38 files: 7 resources, 1 unmapped.Import: 5d2f7c0e-8a41-4c6b-9e2d-1f0b7a3c6d58Template: validConsole: https://orkstage.example.com/templates/import?importId=5d2f7c0e-8a41-4c6b-9e2d-1f0b7a3c6d58
Seu código não sai da sua máquina: o CLI faz o scan localmente e envia só o relatório.
Importação de IaC disponível
POST /importsrecebe um ScanReport ou arquivos que o servidor analisa com o mesmo engine, compilado para WebAssembly. Recursos sem mapeamento e avisos aparecem na lista, nunca escondidos.API keys, webhooks, intake de CI disponível
Chaves com escopo que nunca passam do papel de quem as criou, webhooks assinados com HMAC e protegidos contra replay, e versões imutáveis de imagem publicadas pelo CI por digest.
O CLI ork Preview
init,scan,template validate,pushediff,import,deploy --wait,status,logsedestroy. Saída em JSON e exit codes estáveis para CI. Compile a partir do código até os binários assinados saírem.
Open core
Open source no núcleo. Enterprise onde a organização precisa.
O Community é o control plane completo sob AGPL-3.0 e basta para rodar produção na AWS. O Enterprise adiciona recursos para organizações grandes e para compliance sob licença comercial, ativados por uma chave de licença que funciona offline. Mesmo código, mesmas imagens.
| Área | Community AGPL-3.0, gratuito | Enterprise comercial, chave de licença |
|---|---|---|
| Control plane | Templates, builder visual, placement, planos e políticas, estimativa de custo, deploys, saúde, incidentes, status pages, notificações |
|
| Provisionamento | AWS via OpenTofu, demais provedores em preview, simulador, grafo de dependências, retentativas, detecção de drift |
|
| Identidade | Dev login, OIDC (Microsoft Entra; Google e GitLab por configuração) |
|
| Governança | Sete papéis nativos, aprovação para mudanças de alto risco em produção, audit log que só aceita inserções |
|
| Organizações | Uma organização, vários tenants |
|
| Integrações | API keys, webhooks, intake de CI, importação de IaC, CLI ork (preview) |
|
| Suporte | GitHub Discussions e Slack |
|
Ver a comparação completa entre as ediçõesFale com a gente sobre o Enterprise
Na sua infraestrutura
A plataforma inteira com um comando do Compose.
Você só precisa de Docker. O arquivo do Compose sobe a API, o worker, o console, Postgres, Redis, Mailpit, a imagem do runner OpenTofu e o MiniStack para simular a AWS localmente.
$ git clone https://github.com/orkstage/orkstage && cd orkstage$ docker compose -f infra/local/docker-compose.yml \ --profile platform --profile aws-emulator up -d --build --wait
Esta stack roda em modo de desenvolvimento, com o dev login e o socket do Docker montado. Ela serve para avaliar o OrkStage na sua máquina, não para produção.
- console
- localhost:3000
- api + OpenAPI
- localhost:4000/api/docs
- MiniStack (AWS)
- localhost:4566
- Mailpit
- localhost:8025