neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
Open source DevOps platform. Auto-scaling, zero-downtime deployments, and built-in observability.
Developer toolsGo · TypeScriptGitHub @madfam-orgOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Open-source PaaS for the post-cloud era — Vercel-style preview deploys, GitOps pipelines, Cloudflare Tunnel ingress, Janua SSO, and ArgoCD reconciliation, all running on infrastructure you can own (bare-metal). Self-hosted, sovereign, production-grade.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
MADFAM-ENCLII-FIRST-LEGACY-RAW v1: This document contains legacy raw infrastructure command examples.
Routine production operations must use Enclii web, API, or CLI. Treat raw
kubectl, helm, SSH, provider CLI/API, docker exec, and direct container
access as platform bootstrap or documented break-glass only, and record any
missing Enclii adapter gap.
Deploy, scale, and operate — on infrastructure you own.
Open source DevOps platform with production-grade Kubernetes on Hetzner + Cloudflare.Read the full README ↗[!IMPORTANT] MADFAM-ENCLII-FIRST-LEGACY-RAW v1: This document contains legacy raw infrastructure command examples. Routine production operations must use Enclii web, API, or CLI. Treat raw
kubectl,helm, SSH, provider CLI/API,docker exec, and direct container access as platform bootstrap or documented break-glass only, and record any missing Enclii adapter gap.
Deploy, scale, and operate — on infrastructure you own. Open source DevOps platform with production-grade Kubernetes on Hetzner + Cloudflare.
Status: Production-running beta | Production Checklist → Authentication: OIDC via Janua SSO (RS256 JWT) - Integrated Infrastructure: Hetzner Dedicated + Cloudflare - Running
Enclii is an open source DevOps platform for deploying, scaling, and operating containerized services with enterprise-grade security, GitOps automation, and zero vendor lock-in.
"We run our entire platform on Enclii, authenticated by Janua. We are our own most demanding customer."
Production Services:
api.enclii.dev)app.enclii.dev)admin.enclii.dev)auth.madfam.io) → Janua SSO (OIDC)docs.enclii.dev)enclii.dev)status.enclii.dev, status.madfam.io)All services deploy via zero-touch onboarding — K8s manifests and CI workflows live in each repo, not here. See onboarding guide →
Enclii is the required control plane for MADFAM DevOps and provisioning:
enclii ops replaces routine kubectl, ArgoCD, Longhorn, Kyverno, ExternalSecrets, Vault, and ARC manipulation.enclii providers replaces routine gh, Cloudflare, Porkbun, and Hetzner manipulation.kubectl, helm, SSH, provider CLIs/APIs, docker exec, and direct container access are allowed only for platform bootstrap or documented break-glass emergencies when Enclii is unavailable or lacks an implemented adapter.Enclii does not sell the products in MADFAM's commercial pipeline — it runs them. Demand discovery, pricing, checkout, invoicing, entitlement, and CRM each live in their own service, and every one of those services is deployed, scaled, observed, and rolled back through Enclii. That makes Enclii's reliability a direct commercial dependency rather than a supporting concern: degraded operations here degrade the ability to take money at all.
Enclii is also itself a commercial product, with its own tiers, offered through the same pipeline it operates.
Commercial licensing terms are in COMMERCIAL_LICENSE.md.
Readiness against that responsibility is tracked in
docs/MONETIZATION_PATH_READINESS.md. This section describes Enclii's
designed role; it is not a statement about the live state of any deployment.
Boundary checkpoint (2026-07-26, docs change, pending maintainer review): public-safe role statement only. What was withheld — deployment
topology, credential and secret names, per-service operational state, cost, and incident detail; the canonical
end-to-end description of the monetization pipeline is private and lives in internal-devops at
docs/monetization-engine.md, referenced here by path and not reproduced. Policy:
docs/PUBLIC_REPO_BOUNDARY.md and the
repo-boundary contract.
Last Updated: 2026-07-26
Current Hetzner Topology:
| Surface | Role | Hardware |
|---|---|---|
| The Sanctuary | Production workloads | Hetzner dedicated server |
| The Forge | CI/CD builder capacity | Hetzner Cloud VPS |
Cost-Optimized Stack:
Builder Node Targeting: Build workloads are steered to builder-role nodes with Kubernetes taints (
builder=true:NoSchedule). Not every builder-role node is tainted yet, so production workloads can still land on one; tightening that placement is open work.
Infrastructure Audit (Jan 2026): Evaluated Ubicloud managed PostgreSQL and Redis Sentinel. Decision: NOT NEEDED at this stage. Sentinel manifests staged for future multi-node deployment.
Self-hosted infrastructure is significantly cheaper than equivalent SaaS platforms, but the platform is still a production-running beta until the remaining blockers below are closed.
OIDC/OAuth 2.0 - Full Implementation:
Social & Enterprise Auth:
Access Control:
Security Hardening:
ENCLII_TRUSTED_PROXY_CIDRS, still an operator TODO in production; see SECURITY.md)Cost Advantage:
Cloudflare for SaaS enables unlimited custom domains:
Perfect for: SaaS platforms serving multiple customers with custom domains.
Developer Experience:
enclii init, enclii deploy, enclii logs)Security & Compliance:
Operations:
enclii rollback --instant)Multi-Tenancy:
enclii/
├── apps/
│ ├── switchyard-api/ # Control plane API (Go)
│ ├── switchyard-ui/ # Web dashboard (Next.js)
│ └── roundhouse/ # Build workers (Go)
├── packages/
│ └── cli/ # `enclii` CLI (Go)
├── infra/
│ ├── k8s/ # Kubernetes manifests
│ │ ├── base/ # Core infrastructure
│ │ ├── staging/ # Staging overlays
│ │ └── production/ # Production overlays
│ └── terraform/ # Infrastructure as Code
├── docs/ # Documentation
└── examples/ # Sample service specs
Production Names (all railroad-themed 🚂):
enclii command)/v1/observability/*, Prometheus + Grafana)From PRODUCTION_CHECKLIST.md:
Infrastructure (Complete):
Authentication (Complete):
Build Pipeline (Complete):
Remaining blockers before full production-ready status:
If you just want to ship an app to Enclii, the fastest path is:
VERSION=v1.0.0-alpha.14
OS=linux # use darwin for macOS
ARCH=amd64 # use arm64 on Apple Silicon or ARM Linux
curl -LO "https://github.com/madfam-org/enclii/releases/download/${VERSION}/enclii_${VERSION}_${OS}_${ARCH}.tar.gz"
tar -xzf "enclii_${VERSION}_${OS}_${ARCH}.tar.gz"
sudo install -m 0755 "enclii_${VERSION}_${OS}_${ARCH}/enclii" /usr/local/bin/enclii
enclii login
cd my-app && enclii init
enclii deploy
# → Live at https://dev.my-app.enclii.dev
Full 5-minute quickstart → docs.enclii.dev/quickstart
Migrating from another platform?
This repository contains the full source for Enclii itself. If you're bootstrapping a self-hosted cluster (bare-metal or cloud), continue below. Most users don't need to do this — app.enclii.dev is the hosted control plane.
Core:
Languages:
macOS:
brew install go node pnpm kind helm kubectl docker
NPM Registry Configuration
Enclii uses MADFAM's private npm registry for internal packages. Configure your .npmrc:
# Add to your project's .npmrc or ~/.npmrc
@madfam:registry=https://npm.madfam.io
@enclii:registry=https://npm.madfam.io
@janua:registry=https://npm.madfam.io
# Auth token only needed for publishing (not for installing @enclii/* or @janua/* packages)
//npm.madfam.io/:_authToken=${NPM_MADFAM_TOKEN}
@enclii/* and @janua/* packages have public read access — no token required for npm install. The NPM_MADFAM_TOKEN is only needed for publishing or installing private scopes (@madfam/*, @dhanam/*, etc.).
[!IMPORTANT]
_authTokenabove is forNPM_MADFAM_TOKENonly — a Verdaccio-issued JWT used by CI. If you are a person holding a Janua API key (jnk_…), it goes in_authas HTTP Basic, never in_authToken:npm config set //npm.madfam.io/:_auth "$(printf 'janua:%s' "$JANUA_API_KEY" | base64)"A Janua key in
_authTokenfails silently — Verdaccio verifies a Bearer token as its own JWT before any auth plugin runs, and the failure degrades to anonymous, so you get "authorization required" with no sign the key was seen. Andnpm loginhere authenticates against htpasswd, not Janua; it needs--auth-type=legacy.
See NPM Registry for details, including which credential to use.
# 1. Clone and bootstrap
git clone https://github.com/madfam-org/enclii
cd enclii
make bootstrap # Install dependencies
# 2. Start local Kubernetes
make kind-up # Create kind cluster
make infra-dev # Install NGINX Ingress, cert-manager, Prometheus
make dns-dev # Configure dev DNS
# 3. Run the platform
make run-switchyard # Control plane API on :8001
make run-ui # Web UI on http://localhost:8030
# 4. Try the CLI
make build-cli
./bin/enclii init # Scaffold a service
./bin/enclii previews list # PR preview environments
./bin/enclii deploy --env prod # Deploy to production
./bin/enclii logs api -f # Tail logs
Detailed platform-contributor setup →
See Production Deployment Roadmap for the complete 8-week implementation plan.
Bootstrap:
# Provision Hetzner cluster
hcloud server create --name enclii-node-{1,2,3} --type cpx31
# Configure Cloudflare Tunnel
cloudflared tunnel create enclii-production
# Bootstrap-only: first cluster/platform install before Enclii can manage itself.
kubectl apply -k infra/k8s/production
Boundary checkpoint (2026-09-24, platform ops): public-safe CLI usage only, checked against
enclii --helpfor v1.0.0-alpha.11. No operational detail was added or withheld here. Policy:docs/PUBLIC_REPO_BOUNDARY.md.
enclii login # Authenticate via Janua SSO
enclii init # Create a service.yaml from a framework template
enclii deploy # Build and deploy the service in ./service.yaml (rolling, or --canary N)
enclii logs <service> # Show logs (-f to stream)
enclii ps # List services and their status
enclii secrets set # Manage secrets and environment variables
enclii domains add # Add a custom domain
enclii rollback # Revert to a previous deployment
enclii previews list # PR preview environments (created by the GitHub webhook)
Replica counts are set in service.yaml (replicas); there is no enclii scale command.
The full command reference is docs/cli/README.md.
Common workflows:
# Canary deploy to production: 10% of traffic, auto-promote after the validation window
enclii deploy --env prod --canary 10 --change-ticket https://tracker.example.com/CHG-1234
# Set secrets
enclii secrets set DATABASE_URL=postgres://... --secret --env prod
# Custom domain
enclii domains add api.example.com --service api --env prod
# Roll back to the previous deployment
enclii rollback api --env prod
📚 Complete Documentation Index →
Getting Started:
Architecture:
Infrastructure (Jan 2026):
Audits & Reports:
Operations:
| Feature | Railway | Enclii |
|---|---|---|
| Cost | Expensive | Self-hosted (fraction of SaaS cost) |
| Custom Domains | Limited, expensive | 100 FREE (Cloudflare for SaaS) |
| Vendor Lock-In | Full lock-in | None (portable Kubernetes) |
| Auth | Bring your own (expensive) | Janua included |
| Bandwidth | Expensive egress | Zero egress (Cloudflare R2) |
| Multi-Tenancy | Not designed for it | Built-in (NetworkPolicies, quotas) |
| Self-Hosting | Impossible | Fully self-hosted |
| Feature | Vercel + Clerk | Enclii |
|---|---|---|
| Cost | Expensive | Self-hosted (fraction of cost) |
| Backend Support | Limited (Functions) | Full container support |
| Database | Bring your own | Self-hosted PostgreSQL included |
| Auth | Clerk (expensive) | Janua included |
| Control | SaaS (no control) | Full control (self-hosted) |
Why self-hosted infrastructure matters:
enclii init/up/deploy/logs)Master plan: COMMERCIAL_GA_MASTER_PLAN.md
Post-GA: multi-region, managed DB marketplace, KEDA custom metrics, full SOC 2 attestation.
Wave/gate status, readiness percentages, and dates live in COMMERCIAL_GA_TRACKER.md — the canonical tracker for current program state.
See CONTRIBUTING.md for the full guide. Quick checklist:
Boundary checkpoint (2026-06-04, platform owner): this public quick-start only
links the repository boundary policy and keeps private operational topology,
credential, cost, and incident detail in internal-devops. Policy:
docs/PUBLIC_REPO_BOUNDARY.md and
repo-boundary contract.
Keep implementation guidance public-safe. If a detail is private/sensitive, place it in internal-devops and link from here with a sanitized summary.
make precommit before pushingSupply Chain Security:
Runtime Security:
Security baseline (2026-09-30):
apps/switchyard-ui, apps/admin-console (the dispatch image), apps/status and apps/landing. GHSA-vcvr-r3jv-pc5j is a critical RCE in next/og ImageResponse (>=16.2.0 <16.3.6); apps/admin-console/app/icon.tsx uses ImageResponse. Bumped in #659 (eslint-config-next to ^16.3.8 as well).apps/status has its own lockfile. apps/status/Dockerfile installs from apps/status/pnpm-lock.yaml with --frozen-lockfile, so a Next bump must regenerate it as well as the root pnpm-lock.yaml (pnpm 9.15.9, the Dockerfile's pin). #659 missed it and the status image failed to build until #660.status, dispatch and switchyard-ui deletes npm and npx (#660). Trivy failed those images on HIGH CVEs that lived only in npm's own vendored tree (brace-expansion 5.0.9, undici 6.28.0), no npm release bundled the fixes, and the runtimes only execute node server.js (healthchecks use wget). CI job runner-npm-lint (scripts/check-runner-no-npm.py) keeps the deletion in place and rejects a runner CMD/HEALTHCHECK that calls npm. To add npm back to a runtime, follow the steps in that script's header: allowlist the service with a reason, and pin an npm whose bundled dependencies pass Trivy.Security baseline (2026-10-18):
switchyard-api and docs-site images (CVE-2026-77214, #770): the scan gate had stopped their pins until the floor landed.ENCLII_TRUSTED_PROXY_CIDRS (#783); that variable is not set in production yet.Responsible Disclosure: Email: [email protected]
We run our entire production infrastructure on Enclii, authenticated by Janua.
When prospects ask "Can Enclii handle production?" — we answer with verifiable proof:
"We run our entire production on Enclii, deployed with our own platform."
Production services running today:
Why this matters:
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) to protect the sovereignty of the infrastructure and ensure that all modifications remain open source when deployed as a network service.
Copyright (C) 2025 Innovaciones MADFAM SAS de CV
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see LICENSE or visit https://www.gnu.org/licenses/agpl-3.0.html.
The AGPL-3.0 license ensures that:
This aligns with the MADFAM Manifesto Section IV: protecting open infrastructure from proprietary capture.
This repository includes machine-readable context files following the llmstxt.org spec:
| Repository | Contract | Defined in |
|---|---|---|
| janua | Identity provider for the control plane, the dashboard and the CLI (OIDC, RS256 JWKS). enclii provision oidc registers ecosystem OAuth clients against it. | docs/guides/ECOSYSTEM_INTEGRATION.md |
| janua | Machine-to-machine tokens between services that Enclii deploys: one confidential client per edge, scoped, with the client secret delivered through Enclii secrets. | docs/service-tokens.md |
| tezca (consumer) | Deploys on Enclii with its own build workflows: digest pins in k8s/production/, lifecycle events reported here, ArgoCD sync. Its root-lockfile deploy gap is documented on its side. | enclii.yaml, docs/deployment/PRODUCTION_DEPLOYMENT.md |
| Other ecosystem services (consumers) | Every product repo declares an enclii.yaml and deploys through Enclii, either with the reusable build-publish.yml or with its own workflows that pin digests. | This repo: docs/reference/service-spec.md, docs/guides/ZERO_TOUCH_CONTRACT.md, , |
Questions? Open an issue or contact the team at [email protected]
Ready to deploy? Start with PRODUCTION_DEPLOYMENT_ROADMAP.md 🚀
docs/guides/reusable-workflows.md