GitOps control plane untuk OpenTofu & Ansible.
Kelola infrastruktur multi-cloud dari satu console: provisioning, konfigurasi, cost, secrets, RBAC, CI/CD, AI assist — dengan PostgreSQL/Neon sebagai persistence dan model multi-tenant berbasis org.
Official Site · Docs · Changelog · Issues
Table of contents
- Multi-cloud stacks — wizard berbasis schema untuk Hetzner, Biznet Gio, IDCloudHost, AWS, GCP, Azure, Cloudflare, Kubernetes/EKS/GKE, dan ByteDC.
- OpenTofu lifecycle — plan / apply / destroy / validate / test via worker pool (Go worker), remote state, drift detection, snapshots & rollback.
- Stack ops — lock/unlock (maintenance), taint/untaint, output viewer, force-unlock, per-stack approval & policy gate.
- RBAC — users, roles, permissions, service accounts & API tokens.
- Approval gate — prod apply butuh persetujuan; role-per-environment.
- Feature flags — progressive delivery & kill-switch (
block_apply, per-stack block, rollout %, whitelist/blacklist, audit trail, TTL). - Test cases — assertion library (CIDR publik, secret di tfvars, IAM
wildcard, dll), blocker fail menahan apply, integrasi
tofu test. - MFA (TOTP) & SSO OIDC, compliance scorecard, audit log.
- Cost analysis — estimasi per stack/provider, budget & alert, forecast, tag breakdown, rightsizing suggestion, cost reports.
- Preview environment per PR — stack ephemeral dibuat & di-teardown otomatis via webhook GitHub.
- GitHub Actions management — repos, workflows, runs, dispatch/rerun/ cancel, workflow templates (scaffold & commit), secrets/variables.
- BYOC (Bring Your Own Cloud) — hubungkan akun cloud existing, validasi kredensial, discovery resource, generate import block OpenTofu.
- Code Registry — simpan modul IaC & role Ansible, install ke stack (shadcn-style copy), version & metadata.
- PostgreSQL/Neon — seluruh persistence di Postgres (auth, config, worker index, kv-store, executions, stack state, snapshots).
- Multi-tenant org — orgs → members (owner/admin/member/readonly) → projects; akses project di-gate per membership (403 lintas-org).
- AI tools — chat assistant, plan review (cost/security), playbook draft, auto-dokumentasi infrastruktur.
radas/
├── apps/
│ ├── radas-console/ # React 19 + Vite + TanStack Router/Query (UI)
│ ├── server/ # Phoenix API (Elixir toolchain) + services + storage (Postgres)
│ ├── opensible-worker/ # Go worker — claim & eksekusi OpenTofu/Ansible
│ └── cli/ # Go CLI (radas)
├── templates/opensible-iac/ # Modul OpenTofu per provider (IaC source)
└── docs/ # ROADMAP (666 use cases), ARCHITECTURE, dsb
Prasyarat: Node 22+, pnpm 10, Elixir 1.18 + Erlang 27, Go 1.25+, PostgreSQL 15 (lokal) atau Neon (cloud).
# 1. Dependencies
pnpm install
cd apps/server && mix deps.get
# 2. Database (Postgres lokal — atau set DATABASE_URL ke Neon)
brew install postgresql@15 && brew services start postgresql@15
createdb radas && createdb radas_test
mix ecto.setup
# 3. Jalankan (pm2 orchestrates phoenix :4000, console :8080, worker)
pnpm dev:radasBuka http://localhost:8080 → login admin / admin12345 (bisa diubah
via ADMIN_INITIAL_PASSWORD di ecosystem.config.cjs).
cd apps/server
mix test # suite penuh + parity gates (ExUnit)
bash scripts/check-sensitive-paths.sh # static rules
python3 tests/test_repo_paths.py # repo path integrity (stdlib)DATABASE_URLwajib — server menolak boot tanpa koneksi Postgres yang bisa diakses (Neon supported:postgres://user:pass@host/db?sslmode=require).- Skema dikelola Ecto migration
apps/server/priv/repo/migrations/(tracking tableecto_migrations). - Migrasi data lama (SQLite/JSON → PG):
# Legacy one-shot migration script lived in the retired Flask tree; for
# legacy data imports use the current kv/config ingestion via Phoenix.
DATABASE_URL=postgres://… pnpm --filter @radas/console devDetail lengkap: docs/postgres-neon.md.
orgs+org_members(owner/admin/member/readonly) +projects.org_id.- JWT membawa
org_id;POST /api/auth/switch-orguntuk ganti konteks. - Route project-scoped memakai
require_project_access— user di luar org pemilik project mendapat 403.
Contributions welcome — bug reports, feature requests, atau code.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Roadmap & backlog: docs/ROADMAP.md.
Distributed under the Apache License 2.0. See LICENSE.
Made with ❤️ by Treon Studio