Skip to content

Commit f22697b

Browse files
committed
docs: add 'Three ways. One binary.' section + workspace-jail callout
Reflects the v2.0.33+ product vision: TUI in terminal, web console pointed at localhost, self-hosted on the user's own cloud. New section right after the hero with three side-by-side cards (terminal / browser / self-hosted SaaS). Below it, an orange callout explaining the workspace jail — what it covers (Read, Write, Edit, Glob, Grep, Bash), what it blocks (path traversal, symlink escape), and how the operator can disable it (OPENANALYST_DISABLE_WORKSPACE_JAIL=1). Navigation gets a 'Modes' link between Documentation and Install so visitors land on the section quickly. Visual treatment uses the existing .pcard grid + a custom orange border for the jail callout. Per-section animation flavors from the earlier commit still apply.
1 parent 0947ce3 commit f22697b

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

docs/index.html

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,7 @@
809809
<a href="#" class="nav-logo"><img src="openanalyst-icon.png" alt="OA"><span>OpenAnalyst</span></a>
810810
<ul class="nav-links">
811811
<li><a href="Documentation/index.html" target="_blank" style="color:var(--accent);font-weight:600">Documentation</a></li>
812+
<li><a href="#modes">Modes</a></li>
812813
<li><a href="#install">Install</a></li>
813814
<li><a href="#providers">Providers</a></li>
814815
<li><a href="#features">Features</a></li>
@@ -838,6 +839,48 @@ <h1>OpenAnalyst CLI</h1>
838839
</div>
839840

840841
<!-- ═══ 3. INSTALL ═══ -->
842+
843+
<!-- ====== Three Ways To Use It (web-ui era) ====== -->
844+
<section id="modes" style="background:var(--bg2)">
845+
<div class="wrap">
846+
<div class="section-label">How to run it</div>
847+
<div class="section-title">Three ways. One binary.</div>
848+
<div class="section-sub">OpenAnalyst ships as a single CLI that fronts three independent surfaces. Use whichever fits the moment — they all speak to the same engine, share the same sessions, respect the same workspace boundary.</div>
849+
850+
<div class="pgrid" style="margin-top:24px">
851+
<div class="pcard">
852+
<div class="pcard-name">🖥️ Terminal TUI</div>
853+
<div class="pcard-env">openanalyst</div>
854+
<div class="pcard-desc">Full interactive TUI in your shell. The whole folder becomes your workspace. Best for power users in their editor flow.</div>
855+
</div>
856+
<div class="pcard">
857+
<div class="pcard-name">🌐 Web console</div>
858+
<div class="pcard-env">openanalyst --serve 3080</div>
859+
<div class="pcard-desc">Hosted HTTP+SSE API plus a SolidJS web UI you open in any browser. Tab-based sessions, model picker, file viewer with download, validate-then-save provider keys.</div>
860+
</div>
861+
<div class="pcard">
862+
<div class="pcard-name">☁️ Self-hosted SaaS</div>
863+
<div class="pcard-env">deploy --serve to your cloud</div>
864+
<div class="pcard-desc">Same binary on AWS / Fly / Render / your VPS. Ship the web UI static bundle to S3 + CloudFront. One client per deployment, your infrastructure, your data.</div>
865+
</div>
866+
</div>
867+
868+
<div style="margin-top:32px;padding:18px;border:1px solid rgba(255,107,0,0.25);border-radius:14px;background:rgba(255,107,0,0.04)">
869+
<div style="font-size:12px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);margin-bottom:6px">Workspace jail · admin-only escape</div>
870+
<div style="font-size:15px;font-weight:600;margin-bottom:6px">Every file operation is locked to the folder the CLI was launched from.</div>
871+
<div style="font-size:14px;color:var(--muted);line-height:1.7">
872+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Read</code>,
873+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Write</code>,
874+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Edit</code>,
875+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Glob</code>,
876+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Grep</code>, and
877+
<code style="font-family:'JetBrains Mono',monospace;color:var(--accent3);background:rgba(255,107,0,0.06);padding:1px 6px;border-radius:4px">Bash</code>
878+
all canonicalize the requested path and refuse anything outside the workspace root — including path traversal (<code style="font-family:'JetBrains Mono',monospace">../../etc/passwd</code>) and symlink escapes. The end user using the web UI cannot disable this. Only the operator running the server can, by setting <code style="font-family:'JetBrains Mono',monospace">OPENANALYST_DISABLE_WORKSPACE_JAIL=1</code> before launch.
879+
</div>
880+
</div>
881+
</div>
882+
</section>
883+
841884
<section id="install">
842885
<div class="wrap">
843886
<div class="section-label">Get Started</div>

0 commit comments

Comments
 (0)