Skip to content

Commit 023bade

Browse files
authored
docs(landing): refresh for v1.15 + richer, less static page (#96)
- new 'What's new in v1.15' section: proactive engagement, storage maintenance, memory overhaul, PIGuard fixes, multilingual STT, cache honesty - with links to releases and docs - hero stats bar (binary size, AIEB score, tool count, interfaces, latest release link) and a sticky section nav - feature grid: Extended Memory replaces the stale 3-tier card; new Proactive Engagement, Storage Maintenance, and PIGuard cards; interaction modes card corrected to four modes (incl. off) - new demo carousel slide showing follow-up suggestions + a nudge - stale bits fixed: Telegram mockup cache stats now use the v1.15.3 human format with real numbers; cheatsheet gains cleanup/schedule/ memory/skill commands and --memory-extended-enabled; docs grid gains EXTENDED_MEMORY, MAINTENANCE, TOOL_SELECTION, DAILY-WORKER; DeepSeek capitalization; escaped a literal <task> tag
1 parent b35af71 commit 023bade

1 file changed

Lines changed: 158 additions & 9 deletions

File tree

docs/index.html

Lines changed: 158 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,57 @@
9090
.hero .install-block .btn:hover { opacity: .85; }
9191
.cta-block { margin-top: 0; }
9292

93+
/* ── Hero stats bar ── */
94+
.hero .stats {
95+
display: flex; justify-content: center; gap: 40px; margin-top: 44px;
96+
flex-wrap: wrap;
97+
}
98+
.hero .stats .stat { text-align: center; }
99+
.hero .stats .stat .v {
100+
font-size: 1.5rem; font-weight: 800; color: var(--accent);
101+
font-family: var(--font-mono); letter-spacing: -.02em;
102+
}
103+
.hero .stats .stat .k {
104+
font-size: 0.75rem; color: var(--text-secondary); margin-top: 2px;
105+
}
106+
.hero .stats .stat a .v { transition: opacity .15s; }
107+
.hero .stats .stat a:hover .v { opacity: .8; text-decoration: none; }
108+
109+
/* ── Section nav (sticky) ── */
110+
.section-nav {
111+
position: sticky; top: 0; z-index: 20;
112+
display: flex; justify-content: center; gap: 4px; flex-wrap: wrap;
113+
padding: 10px 16px;
114+
background: color-mix(in srgb, var(--bg-primary) 88%, transparent);
115+
backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
116+
border-bottom: 1px solid var(--border-subtle);
117+
}
118+
.section-nav a {
119+
color: var(--text-secondary); font-size: 0.75rem; padding: 4px 10px;
120+
border-radius: 6px; transition: all .15s;
121+
}
122+
.section-nav a:hover { color: var(--accent); background: var(--bg-card); text-decoration: none; }
123+
124+
/* ── "New" badge ── */
125+
.badge-new {
126+
display: inline-block; background: var(--green); color: #000;
127+
font-size: 0.625rem; font-weight: 700; padding: 2px 7px; border-radius: 4px;
128+
margin-left: 8px; vertical-align: middle; letter-spacing: .04em;
129+
}
130+
131+
/* ── What's-new cards ── */
132+
.whatsnew { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
133+
.whatsnew .card {
134+
background: var(--bg-secondary); border: 1px solid var(--border-subtle); border-radius: 12px;
135+
padding: 24px; border-left: 3px solid var(--accent);
136+
}
137+
.whatsnew .card h4 { font-size: 1rem; font-weight: 600; margin-bottom: 6px; }
138+
.whatsnew .card h4 .ver { color: var(--text-secondary); font-weight: 400; font-size: 0.75rem; font-family: var(--font-mono); margin-left: 8px; }
139+
.whatsnew .card p { font-size: 0.8125rem; line-height: 1.5; }
140+
.whatsnew .card p code { font-size: 0.75rem; }
141+
.whatsnew .card a { font-size: 0.8125rem; }
142+
@media (max-width: 700px) { .whatsnew { grid-template-columns: 1fr; } }
143+
93144
/* ── Copy button ── */
94145
.copy-btn {
95146
background: transparent; border: 1px solid var(--border-subtle); color: var(--text-secondary);
@@ -420,7 +471,7 @@
420471
"name": "Which LLM providers does odek support?",
421472
"acceptedAnswer": {
422473
"@type": "Answer",
423-
"text": "Any OpenAI-compatible endpoint: Deepseek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, and Fireworks. odek is provider-agnostic, so you are not locked into a single vendor."
474+
"text": "Any OpenAI-compatible endpoint: DeepSeek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, and Fireworks. odek is provider-agnostic, so you are not locked into a single vendor."
424475
}
425476
},
426477
{
@@ -468,6 +519,14 @@ <h1>odek</h1>
468519
<a class="btn" href="#install">Get Started →</a>
469520
</div>
470521

522+
<div class="stats">
523+
<div class="stat"><div class="v">~12 MB</div><div class="k">static binary</div></div>
524+
<div class="stat"><div class="v">80.3%</div><div class="k">AIEB v2.0 score</div></div>
525+
<div class="stat"><div class="v">25+</div><div class="k">built-in tools</div></div>
526+
<div class="stat"><div class="v">4</div><div class="k">interfaces: CLI · REPL · Web · Telegram</div></div>
527+
<div class="stat"><a href="https://github.com/BackendStack21/odek/releases/tag/v1.15.3"><div class="v">v1.15.3</div><div class="k">latest release ↗</div></a></div>
528+
</div>
529+
471530
<!-- ═══ Hero carousel — zero → Telegram bot ═══ -->
472531
<div class="carousel hero-carousel">
473532
<div class="bar">
@@ -659,7 +718,7 @@ <h1>odek</h1>
659718
<span class="tg-sender">Principal</span>
660719
<div class="tg-bbl">
661720
<div class="tg-reply">Hi</div>
662-
<div class="tg-code">✅ Done · 1 turn · 10095 in / 155 out · cache: 0cr+0rd+0ct · 2s — tools: none</div>
721+
<div class="tg-code">✅ Done · 1 turn · 10095 in / 155 out · cache: 8143 write / 0 read / 0 total · 2s — tools: none</div>
663722
</div>
664723
<span class="tg-time">13:10</span>
665724
</div>
@@ -677,6 +736,52 @@ <h1>odek</h1>
677736

678737
<div class="container">
679738

739+
<nav class="section-nav" aria-label="Section navigation">
740+
<a href="#whats-new">What's new</a>
741+
<a href="#five-whys">Why</a>
742+
<a href="#demos">Demos</a>
743+
<a href="#features">Features</a>
744+
<a href="#install">Install</a>
745+
<a href="#cheatsheet">Cheatsheet</a>
746+
<a href="#docs">Docs</a>
747+
</nav>
748+
749+
<!-- ═══ What's new in v1.15 ═══ -->
750+
<section id="whats-new">
751+
<h2>What's new in <span class="hl">v1.15</span></h2>
752+
<p style="margin-bottom:20px;color:var(--text-secondary);font-size:0.9375rem">
753+
The biggest release since Extended Memory: the agent now anticipates, and cleans up after itself.
754+
Full notes in the <a href="https://github.com/BackendStack21/odek/releases/tag/v1.15.0">v1.15.0 release</a>.
755+
</p>
756+
757+
<div class="whatsnew">
758+
<div class="card">
759+
<h4>💡 Proactive Engagement <span class="ver">v1.15.0</span></h4>
760+
<p>The agent ends answers with <strong>follow-up suggestions</strong> it already predicted, tracks your <strong>open loops</strong> (unanswered questions, stated goals), and can send <strong>opt-in proactive nudges</strong> — with hard anti-annoyance caps so it never becomes noise. Scheduled jobs are memory-wired, so a cron task can analyze your memory and sessions. <a href="https://github.com/BackendStack21/odek/blob/main/docs/EXTENDED_MEMORY.md#p6--proactive-engagement">docs ↗</a></p>
761+
</div>
762+
<div class="card">
763+
<h4>🧹 Storage Maintenance <span class="ver">v1.15.0</span></h4>
764+
<p>A janitor goroutine keeps long-lived agents (Telegram bot, <code>serve</code>) clean forever: session/audit/log/plan/media retention driven by an operator-only <code>maintenance</code> config. <code>odek cleanup --dry-run</code> previews exactly what would be deleted before anything is touched. <a href="https://github.com/BackendStack21/odek/blob/main/docs/MAINTENANCE.md">docs ↗</a></p>
765+
</div>
766+
<div class="card">
767+
<h4>🧠 Memory overhaul <span class="ver">v1.15.0</span></h4>
768+
<p>Semantic dedup of stored atoms, relevance-preserving recall ranking, atom consolidation, index staleness detection, and <code>odek memory extended stats</code> for operators. Guard-rejected memories go to quarantine for human review instead of vanishing.</p>
769+
</div>
770+
<div class="card">
771+
<h4>🛡️ PIGuard + guard fixes <span class="ver">v1.15.x</span></h4>
772+
<p>The prompt-injection sidecar got its score semantics fixed (confident-benign memories no longer rejected), a JSON-faithful HTTP gateway, NDJSON socket transport, and Apple-Silicon-safe builds. Skill auto-learn is hardened against project-repo injection.</p>
773+
</div>
774+
<div class="card">
775+
<h4>🗣️ Multilingual voice (STT) <span class="ver">v1.15.2</span></h4>
776+
<p>Docker images ship the multilingual <code>ggml-small</code> whisper model — usable <strong>German, English, and Spanish</strong> voice transcription out of the box (was effectively English-only).</p>
777+
</div>
778+
<div class="card">
779+
<h4>📊 Honest cache metrics <span class="ver">v1.15.3</span></h4>
780+
<p>DeepSeek's native cache fields are parsed, and providers that report nothing show <code>cache: n/a</code> instead of misleading zeros.</p>
781+
</div>
782+
</div>
783+
</section>
784+
680785
<!-- ═══ Five Whys ═══ -->
681786
<section id="five-whys">
682787
<h2>The <span class="hl">Five Whys</span></h2>
@@ -691,7 +796,7 @@ <h2>The <span class="hl">Five Whys</span></h2>
691796
</li>
692797
<li>
693798
<span class="q">Why?</span>
694-
<span class="a">Because locking into one LLM provider is a strategic mistake. odek is <strong>provider-agnostic</strong>Deepseek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, Fireworks. Any OpenAI-compatible endpoint.</span>
799+
<span class="a">Because locking into one LLM provider is a strategic mistake. odek is <strong>provider-agnostic</strong>DeepSeek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, Fireworks. Any OpenAI-compatible endpoint.</span>
695800
</li>
696801
<li>
697802
<span class="q">Why?</span>
@@ -817,6 +922,21 @@ <h2>See it in <span class="hl">action</span></h2>
817922
<span class="info">🏆 80.3% — highest published agent score</span>
818923
</div>
819924

925+
<!-- Slide 8 -->
926+
<div class="slide">
927+
<span class="info"># Proactive engagement — the agent anticipates</span><br>
928+
<span class="prompt">$ odek run --session "I plan to migrate Postgres 14 → 17 next quarter"</span><br>
929+
<span class="output">Good call to plan early. Watch out for: logical replication</span><br>
930+
<span class="output">slots, removed GUCs, and driver upgrades…</span><br>
931+
<span class="info">── You might also want to ──</span><br>
932+
<span class="output">• What are the breaking changes between PG 14 and 17?</span><br>
933+
<span class="output">• How do I test the migration with minimal downtime?</span><br>
934+
<span class="info"># … days later, via Telegram — an opt-in nudge:</span><br>
935+
<span class="output">💡 Your Postgres migration goal has been quiet for a week —</span><br>
936+
<span class="output"> want a pg_upgrade dry-run checklist?</span><br>
937+
<span class="info"># capped: max/day + per-kind cooldown. Never noisy.</span>
938+
</div>
939+
820940
</div>
821941
<div class="nav"></div>
822942
</div>
@@ -848,8 +968,26 @@ <h4>Self-Learning Skills</h4>
848968

849969
<div class="card">
850970
<div class="icon">💾</div>
851-
<h4>Persistent Memory</h4>
852-
<p>Three tiers: facts (markdown on disk), session buffer, and searchable episodes. Merge-on-write via go-vector cosine similarity saves ~80% LLM calls. go-vector RP is ephemeral &mdash; rebuilt from text on every write, no embedding state to persist.</p>
971+
<h4>Extended Memory</h4>
972+
<p>Semantic, atomic memory: facts, preferences, goals extracted per turn, deduplicated by meaning, ranked by relevance and recency. Quarantine for untrusted content, associations between atoms, and a stats surface for operators. Legacy three-tier facts/buffer/episodes included too.</p>
973+
</div>
974+
975+
<div class="card">
976+
<div class="icon">💡</div>
977+
<h4>Proactive Engagement <span class="badge-new">NEW</span></h4>
978+
<p>The agent anticipates: follow-up suggestions after answers, open-loop tracking of your questions and goals, and opt-in proactive nudges with anti-annoyance caps. Scheduled jobs are memory-wired, so cron tasks can analyze memory and sessions.</p>
979+
</div>
980+
981+
<div class="card">
982+
<div class="icon">🧹</div>
983+
<h4>Storage Maintenance <span class="badge-new">NEW</span></h4>
984+
<p>Long-lived agents stay clean forever: a janitor handles session, audit-log, log, plan, and media retention on an operator-only config. <code>odek cleanup --dry-run</code> shows exactly what would be removed, first.</p>
985+
</div>
986+
987+
<div class="card">
988+
<div class="icon">🛡️</div>
989+
<h4>PIGuard Sidecar</h4>
990+
<p>Optional ML prompt-injection guard (ONNX, local) as a semantic second opinion on top of the rule-based scan — guarding memory writes, skill bodies, system prompts, and MCP descriptions. Docker Compose sidecar included.</p>
853991
</div>
854992

855993
<div class="card">
@@ -891,7 +1029,7 @@ <h4>Parallel Tool Execution</h4>
8911029
<div class="card">
8921030
<div class="icon">💬</div>
8931031
<h4>Interaction Modes</h4>
894-
<p>Three modes: <strong>engaging</strong> (emoji-rich LLM narration), <strong>enhance</strong> (narration persists after response), and <strong>verbose</strong> (raw tool traces). Per-tool trace messages with LLM reasoning content. Works across CLI, Telegram, and Web UI.</p>
1032+
<p>Four modes: <strong>engaging</strong> (emoji-rich LLM narration), <strong>enhance</strong> (narration persists after response), <strong>verbose</strong> (raw tool traces), and <strong>off</strong> (clean, machine-friendly). Per-tool trace messages with LLM reasoning content. Works across CLI, Telegram, and Web UI.</p>
8951033
</div>
8961034

8971035
<div class="card">
@@ -1013,7 +1151,13 @@ <h3>Commands</h3>
10131151
<li><span class="cmd">odek mcp</span><span class="desc">Start MCP server (stdio)</span></li>
10141152
<li><span class="cmd">odek mcp --sse-addr :8081</span><span class="desc">Start MCP server (SSE)</span></li>
10151153
<li><span class="cmd">odek telegram</span><span class="desc">Start Telegram bot</span></li>
1016-
<li><span class="cmd">odek run --deliver <task></span><span class="desc">Run task, deliver to Telegram</span></li>
1154+
<li><span class="cmd">odek schedule add &lt;task&gt;</span><span class="desc">Schedule a recurring agent task (cron)</span></li>
1155+
<li><span class="cmd">odek cleanup --dry-run</span><span class="desc">Preview storage maintenance, delete nothing</span></li>
1156+
<li><span class="cmd">odek cleanup</span><span class="desc">Run one storage maintenance sweep</span></li>
1157+
<li><span class="cmd">odek memory extended stats</span><span class="desc">Memory store, index, quarantine, recall health</span></li>
1158+
<li><span class="cmd">odek memory extended nudges</span><span class="desc">Preview proactive nudges (no cap consumed)</span></li>
1159+
<li><span class="cmd">odek skill list</span><span class="desc">List learned/installed skills</span></li>
1160+
<li><span class="cmd">odek run --deliver &lt;task&gt;</span><span class="desc">Run task, deliver to Telegram</span></li>
10171161
<li><span class="cmd">odek init [--global]</span><span class="desc">Create config file</span></li>
10181162
<li><span class="cmd">odek version</span><span class="desc">Show version</span></li>
10191163
</ul>
@@ -1028,6 +1172,7 @@ <h3>Key Flags</h3>
10281172
<li><span class="cmd">--no-learn</span><span class="desc">Disable skill learning</span></li>
10291173
<li><span class="cmd">--max-iter &lt;n&gt;</span><span class="desc">Max think→act cycles (default 90)</span></li>
10301174
<li><span class="cmd">--ctx &lt;files&gt; / -c</span><span class="desc">Attach files as context blocks (comma-separated)</span></li>
1175+
<li><span class="cmd">--memory-extended-enabled</span><span class="desc">Enable Extended Memory (opt-in)</span></li>
10311176
<li><span class="cmd">--system &lt;prompt&gt;</span><span class="desc">Override system prompt</span></li>
10321177
<li><span class="cmd">--no-color</span><span class="desc">Disable colored output</span></li>
10331178
<li><span class="cmd">--deliver</span><span class="desc">Deliver result to Telegram default chat</span></li>
@@ -1045,10 +1190,12 @@ <h2>Everything else is <span class="hl">documented</span></h2>
10451190
<a href="https://github.com/BackendStack21/odek/blob/main/docs/CHEATSHEET.md">Cheat Sheet<span>Quick reference: commands, config, memory, subagents, env vars</span></a>
10461191
<a href="https://github.com/BackendStack21/odek/blob/main/docs/API.md">Go SDK Guide<span>Import, Agent, Tools, memory, multi-turn sessions, examples</span></a>
10471192
<a href="https://github.com/BackendStack21/odek/blob/main/docs/CONFIG.md">Configuration<span>Config files, env vars, priority chain</span></a>
1048-
<a href="https://github.com/BackendStack21/odek/blob/main/docs/PROVIDERS.md">Providers & Models<span>Deepseek, OpenAI, Anthropic, Ollama, vLLM, more</span></a>
1193+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/PROVIDERS.md">Providers & Models<span>DeepSeek, OpenAI, Anthropic, Ollama, vLLM, more</span></a>
10491194
<a href="https://github.com/BackendStack21/odek/blob/main/docs/CACHING.md">Prompt Caching<span>Cache markers for lower latency and cost on repeats</span></a>
10501195
<a href="https://github.com/BackendStack21/odek/blob/main/docs/MCP.md">MCP (Two-Way)<span>Serve tools + connect to external MCP servers</span></a>
1051-
<a href="https://github.com/BackendStack21/odek/blob/main/docs/MEMORY.md">Memory System<span>Three-tier facts, buffer, episodes</span></a>
1196+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/MEMORY.md">Memory System<span>Legacy facts, buffer, episodes</span></a>
1197+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/EXTENDED_MEMORY.md">Extended Memory<span>Semantic atoms, recall, quarantine, proactive engagement</span></a>
1198+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/MAINTENANCE.md">Storage Maintenance<span>Janitor, retention config, odek cleanup</span></a>
10521199
<a href="https://github.com/BackendStack21/odek/blob/main/docs/SESSIONS.md">Multi-Turn Sessions<span>Save, resume, list, trim, cleanup</span></a>
10531200
<a href="https://github.com/BackendStack21/odek/blob/main/docs/SANDBOXING.md">Sandboxing<span>Docker isolation, config, security model</span></a>
10541201
<a href="https://github.com/BackendStack21/odek/blob/main/docs/DOCKER_COMPOSE_USER_GUIDE.md">Docker Compose<span>Run odek in Docker with Compose, step by step</span></a>
@@ -1058,6 +1205,8 @@ <h2>Everything else is <span class="hl">documented</span></h2>
10581205
<a href="https://github.com/BackendStack21/odek/blob/main/docs/WEBUI.md">Web UI<span>odek serve, WebSocket protocol, @ resources</span></a>
10591206
<a href="https://github.com/BackendStack21/odek/blob/main/docs/SCHEDULES.md">Scheduled Tasks<span>Native cron — run agent tasks and deliver results</span></a>
10601207
<a href="https://github.com/BackendStack21/odek/blob/main/docs/TELEGRAM.md">Telegram Bot<span>Run agent tasks from Telegram: voice, photos, sessions</span></a>
1208+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/TOOL_SELECTION.md">Tool Selection<span>Enable/disable tools per profile, MCP naming</span></a>
1209+
<a href="https://github.com/BackendStack21/odek/blob/main/docs/DAILY-WORKER.md">Daily Worker<span>odek as your daily chief-of-staff assistant</span></a>
10611210
<a href="https://github.com/BackendStack21/odek/blob/main/docs/DEVELOPMENT.md">Development<span>Building, testing, contributing</span></a>
10621211
</div>
10631212
</section>

0 commit comments

Comments
 (0)