-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
253 lines (231 loc) · 17.7 KB
/
Copy pathindex.html
File metadata and controls
253 lines (231 loc) · 17.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="google-site-verification" content="ZuYrX15aAvWxpeWRw5qe2dj3JYFK78BXchxwaHfuJwM">
<title>Forail Platform — Open Source DevOps Automation (AWX Alternative)</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<meta name="description" content="Forail Platform is an open-source, self-hosted Ansible automation platform and AWX alternative. Deploy on Docker Compose or Kubernetes (Helm chart + operator v1.0.0). Features include event-driven automation, drift detection, OPA policy-as-code, OIDC + WebAuthn, OpenTelemetry observability, and a self-hosted AI assistant (in development).">
<meta name="keywords" content="AWX alternative, AWX fork, Ansible Tower alternative, Ansible Automation Platform open source, open source DevOps, infrastructure automation, Kubernetes operator Ansible, Helm chart Ansible, GitOps Ansible, self-hosted automation, Receptor mesh, OPA policy as code, OIDC WebAuthn, OpenTelemetry Ansible, drift detection, event-driven automation, multi-tenancy">
<meta name="author" content="Krstan Vjestica">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://forail-platform.github.io/">
<meta property="og:type" content="website">
<meta property="og:title" content="Forail Platform — Open Source DevOps Automation (AWX Alternative)">
<meta property="og:description" content="Self-hosted, Apache 2.0 Ansible automation platform. Modernized AWX fork with native Kubernetes operator, OIDC+WebAuthn, OpenTelemetry, OPA policy-as-code, and an experimental AI assistant (in development).">
<meta property="og:url" content="https://forail-platform.github.io/">
<meta property="og:site_name" content="Forail Platform">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://forail-platform.github.io/assets/img/screenshots/dashboard-hero.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Forail Platform dashboard">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Forail Platform — Open Source DevOps Automation (AWX Alternative)">
<meta name="twitter:description" content="Self-hosted Ansible automation: Docker Compose + Kubernetes Helm + operator. The modern AWX alternative.">
<meta name="twitter:image" content="https://forail-platform.github.io/assets/img/screenshots/dashboard-hero.png">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Forail Platform","applicationCategory":"DeveloperApplication","operatingSystem":"Linux, Kubernetes","description":"Open source self-hosted Ansible automation platform. A modernized fork of Ansible AWX with native Kubernetes operator (9 CRDs, multi-cluster), Helm chart, Docker Compose deployment, OIDC + WebAuthn authentication, OpenTelemetry observability, OPA policy-as-code, drift detection, event-driven automation, and an experimental AI assistant (in development).","url":"https://forail-platform.github.io/","author":{"@type":"Person","name":"Krstan Vjestica"},"publisher":{"@type":"Organization","name":"Forail Platform","url":"https://forail-platform.github.io/"},"license":"https://www.apache.org/licenses/LICENSE-2.0","softwareVersion":"2026.07.1","downloadUrl":"https://github.com/forail-platform","codeRepository":"https://github.com/forail-platform","programmingLanguage":["Python","TypeScript","Go"],"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"}}
</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<nav class="nav">
<div class="nav-inner">
<a href="/" class="nav-logo">
<svg viewBox="0 0 64 64" fill="none"><line x1="18" y1="28.5" x2="45" y2="12.5" stroke="#1D9E75" stroke-width="4" stroke-linecap="round"/><line x1="18" y1="28.5" x2="49" y2="36.5" stroke="#1D9E75" stroke-width="4" stroke-linecap="round"/><line x1="18" y1="28.5" x2="26" y2="51.5" stroke="#1D9E75" stroke-width="4" stroke-linecap="round"/><rect x="9" y="19.5" width="18" height="18" rx="5" fill="#1D9E75"/><circle cx="45" cy="12.5" r="6" fill="#1D9E75"/><circle cx="49" cy="36.5" r="6" fill="#1D9E75"/><circle cx="26" cy="51.5" r="6" fill="#1D9E75"/></svg>
Forail
</a>
<ul class="nav-links">
<li><a href="#features">Features</a></li>
<li><a href="#comparison">Comparison</a></li>
<li><a href="#quickstart">Get Started</a></li>
<li><a href="docs/index.html">Docs</a></li>
</ul>
<a href="https://github.com/forail-platform" class="nav-cta">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="margin-right:4px"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.3 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.385-1.335-1.755-1.335-1.755-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 21.795 24 17.295 24 12c0-6.63-5.37-12-12-12z"/></svg>
GitHub
</a>
<button class="nav-toggle" aria-label="Menu">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12h18M3 6h18M3 18h18"/></svg>
</button>
</div>
</nav>
<!-- ─── Hero ─────────────────────────────────────────── -->
<section class="hero">
<div class="hero-content">
<div class="hero-badge">v2026.07.1 — Latest Release</div>
<h1>Infrastructure Automation<br><span>Made Simple</span></h1>
<p>Open-source Ansible platform with event-driven automation, drift detection, policy-as-code, and a self-service portal. Deploy with Docker Compose.</p>
<div class="hero-buttons">
<a href="#quickstart" class="btn btn-primary">Get Started</a>
<a href="docs/index.html" class="btn btn-outline">Documentation</a>
</div>
</div>
<div class="hero-screenshot">
<img src="assets/img/screenshots/dashboard-hero.png" alt="Forail Platform Dashboard" width="960" height="540">
</div>
</section>
<!-- ─── Stats ────────────────────────────────────────── -->
<section style="padding: 2rem 2rem 4rem;">
<div class="container">
<div class="stats-row">
<div class="stat-item"><div class="stat-number">15+</div><div class="stat-label">Features Beyond AWX</div></div>
<div class="stat-item"><div class="stat-number">2,200+</div><div class="stat-label">Tests Passing</div></div>
<div class="stat-item"><div class="stat-number">5 min</div><div class="stat-label">Time to Deploy</div></div>
<div class="stat-item"><div class="stat-number">100%</div><div class="stat-label">Open Source</div></div>
</div>
</div>
</section>
<!-- ─── Features ─────────────────────────────────────── -->
<section id="features" class="section-alt">
<div class="container">
<div class="section-header">
<div class="section-label">Features</div>
<h2>Enterprise Features, Open Source</h2>
<p>Built for teams that need more from their automation platform.</p>
</div>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></div>
<h3>Event-Driven Automation</h3>
<p>HMAC-verified webhook rules with Jinja2 conditions that trigger jobs or notifications automatically.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div>
<h3>Drift Detection</h3>
<p>Automatic configuration drift detection with severity classification, alert rules, and CSV compliance export.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg></div>
<h3>Policy-as-Code</h3>
<p>OPA / Rego rules evaluated before every launch. Block non-compliant automations at the gate.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16"/></svg></div>
<h3>Self-Service Portal</h3>
<p>Curated automation catalog with approval workflows. Users request automations without template access.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/></svg></div>
<h3>Multi-Tenancy</h3>
<p>Per-organization quotas, custom branding, usage tracking, and tenant-aware access control.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg></div>
<h3>AI Assistant <span style="font-size:0.7em;background:#f59e0b;color:#000;padding:2px 6px;border-radius:4px;vertical-align:middle;">In Development</span></h3>
<p>Privacy-first AI chat with local Ollama LLM and RAG. <strong>Preview only — actively under development, not yet production-ready.</strong> Self-hosted, contextual help without sending data to the cloud.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/></svg></div>
<h3>WebAuthn & OIDC</h3>
<p>FIDO2 passkeys, passwordless login, per-org MFA enforcement. SSO with Keycloak, Azure AD, Okta.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg></div>
<h3>IaC Scanning</h3>
<p>Pre-launch security scanning with ansible-lint, checkov, and pip-audit. Configurable severity thresholds.</p>
</div>
<div class="feature-card">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg></div>
<h3>OpenTelemetry</h3>
<p>Distributed tracing and metrics built in. Zero vendor lock-in, zero overhead when disabled.</p>
</div>
</div>
</div>
</section>
<!-- ─── Architecture ─────────────────────────────────── -->
<section id="architecture">
<div class="container">
<div class="section-header">
<div class="section-label">Architecture</div>
<h2>Production-Ready from Day One</h2>
<p>Docker Compose deployment with separate web, task, and frontend containers. Scale with Receptor mesh.</p>
</div>
<div class="arch-container">
<img src="assets/img/architecture.png" alt="Forail Platform Architecture Diagram" loading="lazy">
</div>
</div>
</section>
<!-- ─── Comparison ───────────────────────────────────── -->
<section id="comparison" class="section-alt">
<div class="container">
<div class="section-header">
<div class="section-label">Comparison</div>
<h2>How Forail Compares</h2>
</div>
<div class="table-wrap" style="overflow-x: auto;">
<table class="comparison-table">
<thead>
<tr><th>Feature</th><th>Forail</th><th>AWX</th><th>AAP 2.5+</th><th>Ascender</th><th>Semaphore</th></tr>
</thead>
<tbody>
<tr><td>Docker Compose deploy</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Kubernetes deploy (Helm + Operator)</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Event-driven automation</td><td class="check">Yes</td><td class="cross">No</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Drift detection</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="check">Yes</td><td class="cross">No</td></tr>
<tr><td>Policy-as-Code (OPA)</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">Planned</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Self-service portal</td><td class="check">Yes</td><td class="cross">No</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Multi-tenancy</td><td class="check">Yes</td><td class="cross">No</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>AI assistant</td><td class="cross">In Development</td><td class="cross">No</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>WebAuthn / passkeys</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>IaC scanning</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>OpenTelemetry</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Conditional survey logic</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Modern UI (React 18)</td><td class="check">Yes</td><td class="cross">Legacy</td><td class="check">Yes</td><td class="cross">Legacy</td><td class="check">Yes</td></tr>
<tr><td>Open source</td><td class="check">Yes</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">Partial</td><td class="check">Yes</td></tr>
</tbody>
</table>
</div>
</div>
</section>
<!-- ─── Quick Start ──────────────────────────────────── -->
<section id="quickstart">
<div class="container">
<div class="section-header">
<div class="section-label">Get Started</div>
<h2>Deploy in 5 Minutes</h2>
</div>
<div class="quickstart">
<pre><span class="comment"># Clone and configure</span>
<span class="cmd">git clone https://github.com/forail-platform/forail-devops.git</span>
<span class="cmd">cd forail-devops</span>
<span class="cmd">cp .env.example .env && nano .env</span>
<span class="comment"># Start the platform</span>
<span class="cmd">docker compose up -d</span>
<span class="comment"># Open in browser</span>
<span class="cmd">open https://localhost</span></pre>
</div>
<p style="text-align:center; margin-top:1.25rem; color:var(--text-muted); font-size:.875rem;">
See the <a href="docs/deployment.html">Deployment Guide</a> for TLS, backups, and scaling.
</p>
</div>
</section>
<!-- ─── CTA ──────────────────────────────────────────── -->
<section class="cta-section">
<div class="container" style="position:relative;">
<h2>Ready to Automate?</h2>
<p>Free, open-source, and built for infrastructure teams.</p>
<div class="hero-buttons">
<a href="https://github.com/forail-platform" class="btn btn-primary">View on GitHub</a>
<a href="docs/index.html" class="btn btn-outline">Read the Docs</a>
</div>
</div>
</section>
<footer class="footer">
<div class="footer-links">
<a href="https://github.com/forail-platform">GitHub</a>
<a href="docs/index.html">Documentation</a>
<a href="https://github.com/forail-platform/forail-devops/issues">Issues</a>
</div>
<p>Forail Platform — Apache License 2.0 — Created by Krstan Vjestica</p>
</footer>
<script src="assets/js/main.js"></script>
</body>
</html>