|
809 | 809 | <a href="#" class="nav-logo"><img src="openanalyst-icon.png" alt="OA"><span>OpenAnalyst</span></a> |
810 | 810 | <ul class="nav-links"> |
811 | 811 | <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> |
812 | 813 | <li><a href="#install">Install</a></li> |
813 | 814 | <li><a href="#providers">Providers</a></li> |
814 | 815 | <li><a href="#features">Features</a></li> |
@@ -838,6 +839,48 @@ <h1>OpenAnalyst CLI</h1> |
838 | 839 | </div> |
839 | 840 |
|
840 | 841 | <!-- â•â•â• 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 | + |
841 | 884 | <section id="install"> |
842 | 885 | <div class="wrap"> |
843 | 886 | <div class="section-label">Get Started</div> |
|
0 commit comments