aboutsummaryrefslogtreecommitdiffstats
path: root/site/index.html.in
blob: 7c7312044676e08b5a651155a12ff7195e704181 (plain) (blame)
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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>sl0ppi — a terminal for driving agents</title>
<meta name="description" content="An opinionated zellij fork plus pi integration, packaged as one self-contained tarball.">
<meta property="og:title" content="sl0ppi">
<meta property="og:description" content="An opinionated zellij fork plus pi integration, packaged as one self-contained tarball.">
<meta property="og:url" content="https://sl0ppi.sl0p.foo/">
<style>
  :root {
    --bg: #181818; --fg: #e4e4ef; --dim: #8b8b93; --accent: #ffdd33;
    --green: #73c936; --red: #f43841; --line: #2a2a2a; --panel: #1f1f1f;
  }
  * { box-sizing: border-box; }
  body {
    margin: 0; padding: 2.5rem 1.25rem 5rem; background: var(--bg); color: var(--fg);
    font: 15px/1.65 ui-monospace, "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
  }
  main { max-width: 62rem; margin: 0 auto; }
  h1 { font-size: 2rem; margin: 0 0 .25rem; color: var(--accent); letter-spacing: -.02em; }
  h2 { font-size: 1rem; margin: 2.5rem 0 .75rem; color: var(--accent); font-weight: 600; }
  h2::before { content: "## "; color: var(--dim); }
  p { margin: .5rem 0; }
  a { color: var(--green); }
  .tagline { color: var(--dim); margin-bottom: 2rem; }
  pre, .box {
    background: var(--panel); border: 1px solid var(--line); border-radius: 4px;
    padding: .85rem 1rem; overflow-x: auto; margin: .75rem 0;
  }
  pre { white-space: pre; }
  code { color: var(--fg); }
  .prompt { color: var(--dim); user-select: none; }
  table { border-collapse: collapse; width: 100%; margin: .75rem 0; }
  td, th { text-align: left; padding: .35rem .75rem .35rem 0; border-bottom: 1px solid var(--line); }
  th { color: var(--dim); font-weight: 600; }
  .dim { color: var(--dim); }
  .warn { color: var(--red); }
  ul { margin: .5rem 0; padding-left: 1.25rem; }
  li { margin: .2rem 0; }
  footer { margin-top: 4rem; color: var(--dim); border-top: 1px solid var(--line); padding-top: 1rem; font-size: 13px; }
  .checksum { font-size: 12px; word-break: break-all; color: var(--dim); }
</style>
</head>
<body>
<main>

<h1>sl0ppi</h1>
<p class="tagline">A batteries-included terminal environment for driving LLM agent sessions.
Version <strong>@VERSION@</strong> · @DATE@</p>

<p>Two halves that only make sense together, packaged as one tarball:</p>
<ul>
  <li><strong>sl0ppij</strong> — an opinionated <a href="https://github.com/zellij-org/zellij">zellij</a>
      fork, renamed so it installs and runs <em>alongside</em> an unmodified zellij.</li>
  <li><strong>sl0ppi</strong> — a CLI that turns a directory of projects into a session:
      one root = one session, one project = one tab, each with its own agent.</li>
</ul>

<h2>install</h2>
<pre><span class="prompt">$ </span>curl -fsSL https://sl0ppi.sl0p.foo/install.sh | sh</pre>
<p class="dim">Installs under <code>~/.local</code>. Verifies the release checksum before unpacking
anything, and refuses to continue if it does not match. Read it first if you like:
<a href="/install.sh">install.sh</a>.</p>

<h2>what you get</h2>
<table>
  <tr><th>component</th><th>version</th><th></th></tr>
@COMPONENTS@
</table>
<p class="dim">The multiplexer is a <strong>statically linked musl binary</strong> — no glibc
requirement at all. The agent runs on a bundled <a href="https://bun.sh">bun</a>, so the
target machine needs <strong>no node, npm, rust or python</strong>.</p>

<h2>use it</h2>
<pre><span class="prompt">$ </span>cd ~/dev/myproject &amp;&amp; sl0ppi init   <span class="dim"># make it a project</span>
<span class="prompt">$ </span>cd ~/dev &amp;&amp; sl0ppi up             <span class="dim"># a session, one tab per project</span>
<span class="prompt">$ </span>sl0ppi ls                          <span class="dim"># what is open, and which agents are live</span>
<span class="prompt">$ </span>sl0ppi doctor                      <span class="dim"># check the installation</span></pre>
<p><code>sl0ppi up</code> is idempotent: run it as often as you like, it only creates what is
missing. Agents are staged with <code>start_suspended</code>, so opening twelve projects
does not launch twelve agents — each starts on a keypress.</p>

<h2>download</h2>
<p><a href="/releases/@ARTIFACT@">@ARTIFACT@</a> ·
   <a href="/releases/@ARTIFACT@.sha256">sha256</a> ·
   <a href="/releases/">all releases</a></p>
<p class="checksum">@SHA256@</p>
<pre><span class="prompt">$ </span>curl -fLO https://sl0ppi.sl0p.foo/releases/@ARTIFACT@
<span class="prompt">$ </span>curl -fsSL https://sl0ppi.sl0p.foo/releases/@ARTIFACT@.sha256 | sha256sum -c -
<span class="prompt">$ </span>tar xzf @ARTIFACT@ &amp;&amp; ./@STEM@/install.sh</pre>

<h2>source</h2>
<pre><span class="prompt">$ </span>git clone https://git.sl0p.foo/sl0ppi.git</pre>
<p>Browse: <a href="https://git.sl0p.foo/sl0ppi.git/">git.sl0p.foo/sl0ppi.git</a>.
   The repo vendors all three forks (zellij, zjstatus, the pi extensions) with their
   history, so the tarball is reproducible from a single clone.</p>

<h2>caveats</h2>
<ul>
  <li>x86_64 Linux only so far.</li>
  <li><code>pir</code> (session resume) still needs <code>python3</code> and <code>fzf</code> on the host —
      the only part of the bundle that is not self-contained. <code>sl0ppi doctor</code> tells you.</li>
  <li>Pre-1.0: the on-disk layout and the <code>.sl0ppi/layout.kdl</code> format may still move.</li>
</ul>

<footer>
sl0ppi @VERSION@ · built @DATE@ · <a href="https://sl0p.foo">sl0p.foo</a>
</footer>

</main>
</body>
</html>