From 4956156add41c219b82a60a2edc36b28a5c7a66b Mon Sep 17 00:00:00 2001 From: Keegan Thompson Date: Tue, 7 Apr 2026 18:24:03 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20redesign=20website=20=E2=80=94=20brutal?= =?UTF-8?q?ist=20mono=20style,=20SEO,=20LLM=20discoverability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Pure white bg, JetBrains Mono dominant, no cards/icons/colors - Hero with LLM prompt, brew, npm install options + copy buttons - Flat text feature list with Chrome extension (coming soon) - Clean terminal quickstart block - Favicon (k on black), OG image, apple-touch-icon - llms.txt route for LLM crawlers - robots.txt, sitemap, metadataBase, enriched JSON-LD - Privacy page restyled to match - Contact mailto in footer - Removed unused components (architecture, code-block, install-toggle, ui/) Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/web/public/apple-icon.png | Bin 0 -> 6101 bytes packages/web/public/llms.txt | 39 ------ packages/web/public/robots.txt | 2 - packages/web/src/app/favicon.ico | Bin 0 -> 1348 bytes packages/web/src/app/globals.css | 20 ++- packages/web/src/app/icon.png | Bin 0 -> 853 bytes packages/web/src/app/layout.tsx | 28 +++-- packages/web/src/app/llms.txt/route.ts | 85 +++++++++++++ packages/web/src/app/opengraph-image.png | Bin 0 -> 12765 bytes packages/web/src/app/page.tsx | 2 - packages/web/src/app/privacy/page.tsx | 58 +++++---- packages/web/src/app/robots.ts | 13 ++ packages/web/src/app/sitemap.ts | 8 +- packages/web/src/components/architecture.tsx | 33 ----- packages/web/src/components/code-block.tsx | 48 -------- packages/web/src/components/features.tsx | 61 +++------- packages/web/src/components/footer.tsx | 18 ++- packages/web/src/components/hero.tsx | 115 +++++++++++++----- .../web/src/components/install-toggle.tsx | 51 -------- packages/web/src/components/nav.tsx | 8 +- packages/web/src/components/quickstart.tsx | 69 +++++++---- packages/web/src/components/ui/badge.tsx | 24 ---- packages/web/src/components/ui/button.tsx | 31 ----- packages/web/src/components/ui/tabs.tsx | 96 --------------- 24 files changed, 332 insertions(+), 477 deletions(-) create mode 100644 packages/web/public/apple-icon.png delete mode 100644 packages/web/public/llms.txt delete mode 100644 packages/web/public/robots.txt create mode 100644 packages/web/src/app/favicon.ico create mode 100644 packages/web/src/app/icon.png create mode 100644 packages/web/src/app/llms.txt/route.ts create mode 100644 packages/web/src/app/opengraph-image.png create mode 100644 packages/web/src/app/robots.ts delete mode 100644 packages/web/src/components/architecture.tsx delete mode 100644 packages/web/src/components/code-block.tsx delete mode 100644 packages/web/src/components/install-toggle.tsx delete mode 100644 packages/web/src/components/ui/badge.tsx delete mode 100644 packages/web/src/components/ui/button.tsx delete mode 100644 packages/web/src/components/ui/tabs.tsx diff --git a/packages/web/public/apple-icon.png b/packages/web/public/apple-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0e356029c2ef710870d571c1b7e939a974f20c GIT binary patch literal 6101 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 Z`y4Tjii@`ZQ{{RZBYjh3f$k&R{{Z%5(lr18 literal 0 HcmV?d00001 diff --git a/packages/web/public/llms.txt b/packages/web/public/llms.txt deleted file mode 100644 index 58a9b26..0000000 --- a/packages/web/public/llms.txt +++ /dev/null @@ -1,39 +0,0 @@ -# kib - -> The Headless Knowledge Compiler. CLI-first, LLM-powered tool that turns raw sources into a structured, queryable markdown wiki. - -## Install - -npm i -g @kibhq/cli && kib init - -## Commands - -- kib init — Create a new vault (defaults to ~/.kib) -- kib ingest — Ingest URLs, PDFs, YouTube, GitHub repos, local files -- kib compile — Compile raw sources into wiki articles via LLM -- kib search — BM25 full-text search -- kib query — RAG query with cited answers -- kib chat — Interactive REPL with conversation history -- kib serve — Start MCP server for AI tool integration -- kib mcp — Configure MCP in AI clients (auto-runs on init) -- kib lint — Run health checks on the wiki -- kib watch — Watch inbox/ and auto-ingest new files - -## MCP Server - -8 tools: kib_status, kib_list, kib_read, kib_search, kib_query, kib_ingest, kib_compile, kib_lint -2 resources: wiki://index, wiki://graph -Auto-configures Claude Code, Claude Desktop, and Cursor on kib init. - -## LLM Providers - -- Anthropic (ANTHROPIC_API_KEY) — default model: claude-sonnet-4-20250514 -- OpenAI (OPENAI_API_KEY) — default model: gpt-4o -- Ollama (auto-detect localhost:11434) — default model: llama3 - -## Links - -- GitHub: https://github.com/keeganthomp/kib -- npm: https://www.npmjs.com/package/@kibhq/cli -- npm (core): https://www.npmjs.com/package/@kibhq/core -- Docs: https://github.com/keeganthomp/kib#readme diff --git a/packages/web/public/robots.txt b/packages/web/public/robots.txt deleted file mode 100644 index c2a49f4..0000000 --- a/packages/web/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Allow: / diff --git a/packages/web/src/app/favicon.ico b/packages/web/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4db76218a4d1e1fdcdf143bcfba7511eda4dfee7 GIT binary patch literal 1348 zcmV-K1-tqH0096301yxW0000W0LcLW044wc03aX$0000W096A30Pg_+0EtjeM-2)Z z3IG5A4M|8uQUCw|5C8xG5C{eU001BJ|6u?C0gy>VK~#90l~cQJ!axw5Jq!q9CB`@n z9Tg3t;0yQzI!a0!OSqtlQzuHBhQH!F5VDXQ2k{W#i}vsdW8)|p$+B*}J2Sg`CIGN) z`xSsErE~xgeuo4QNGU(VFnlN5wtWC^QgZwXAq3($E@UAheqPA3tZyQE&~crx-|tba zR#jqw3q~Y}$V>`VCOhGxUayBrrJ~O4CPSq2pG1o7LMpH^j^p5TI^~>*q9L*E<#Gwvb>aIy4u^w^WnttzB|UF88%(ED zbUGc3$74mnL(OhRWC_?JTdmjY@H`KT#RBW~8m4LDd_L!$qQE|5Fc@Gs9AY#YVYOPp zFpR$uXeX>ZnM^R7&Cu<3vD@u(o1jLc5#QTHtJOjf1PH?r?RH!B&OHu;8Ba~54BoNsq)}>`bsXPoV+6;g!rIKV>fN2*TsbyWiBCA z%O}gSd?NAyJpcE1{sDa6eP2Pg=luGD1WM-(-gSI(vGwnEsEqi>eCXxR+fW1i=S!UAHJA$*})UB$yTs%s=z!I1^oK@8e?N)NTpJ!t*u261QnAI&+|e(b4n=_{pRK-Iy*bj-rkOU zK98E3nu;Dg{1K5l@m9I+8_9LE%4 ze}6v~7Z-7Oc!;5)A?)t%!t=b)eL_73oSHN8-rim;FE8Wx_!z^(!#FrNKvPpwq$Z^v zQ-mxyf-`bPJTfw3v}bcFl}ge4A%am?0#JKu-rCxVg@pxdZEcyf-`w0pjR%o4U2w-}LLm|X zCki+l3sX$3Z9z6SH)CdI1|1z8n4Fx%&dv^IXJ?H(VWg0-HDCdIdU}lW_4Rdg&D!8E zCF$$yGw0k3n*|9=z>+8yizc#$hK4&3TNmf&=jNPyp?!K02;6_|K1?syxEK5DIQWZm z0zc+EQ2{96|5-t4t+OIxzSXM;%(*}ln?p+a-h3F(O!m8398O4SmCxtDb5>JIu^wzD z;vjP8n^?powjEB{)jo;HTXScXhf~`zwC8y*0gy!1#`B*RWPO^~vhRfe0000RzzI67yMXgb>m8`r3KNyAksi7g?8)0mAfGH1G@ANh#&!>2)a@l z@dqdfqOR0r;ztxUnODxMPpq_M#yIJPAv5ny?m73KJ9p*^00E!@z;)f%N~x6A`Z<7S zw|h@v^q&Lp1Hf0`_m`}10ibxeuKStb=5B5HJh_Sdibrex#rOU9mH;FFmPjPt1VK=~ zU9-ni8lwv6S1F}}ARvi%;(6XH5y@z+O8^ov0RM?dSwtKFFPQ$1w~ML@;JBAv9R$G# zab344BFV7-P9&Hlpj@U}6`Suw0cR1NoSYc&#>U3GqN>0=6$SkI`Wjrd*_`Z+s?rwB-bzyIB4{K{{hDaC^P9@;f zKbOm4aBvWrOvcDFK0a=MtsJota2&@JVSj%=78e(BczB4Rp&{(g>oe!v3!4QAOTdyS7Kp1v}a{@o+J5d2B;Qv`cX|1y&V!qX@2+X-a6PrUy z`rdpP&rJ5aSsYGCX_e3CzjIboO0gbnCgLD+=bKo>B(@z++0{OY$Xjz~m4{Q?F|_A- fF9DE5)yDIm7G!;z*Rt=000000NkvXXu0mjf?qY CLI-first, LLM-powered tool that turns raw sources into a structured, queryable markdown wiki. + +## What is kib? + +kib is an open-source CLI tool that ingests raw source material (URLs, PDFs, YouTube transcripts, GitHub repos, images, local files), compiles it into a structured markdown wiki using LLMs, and lets you search and query your knowledge base from the terminal. + +## Install + +Homebrew (macOS & Linux): +brew tap keeganthomp/kib && brew install kib + +npm: +npm i -g @kibhq/cli + +## Quick Start + +kib init +kib ingest +kib compile +kib query "your question" +kib chat + +## Key Features + +- Ingest: URLs, PDFs, YouTube, GitHub repos, images, local files +- Compile: LLM structures sources into connected markdown articles with frontmatter, tags, and wikilinks +- Search: BM25 full-text search with English stemming, sub-50ms +- Query: RAG over your wiki with cited answers +- Chat: Interactive REPL with conversation history +- MCP Server: 8 tools (kib_status, kib_list, kib_read, kib_search, kib_query, kib_ingest, kib_compile, kib_lint) and 2 resources (wiki://index, wiki://graph) +- Lint: Health checks for orphan articles, broken wikilinks, stale sources +- Skills: Built-in and custom .ts skills with full vault/LLM/search access +- Export: Markdown or HTML static site output +- Chrome Extension: One-click webpage saving (coming soon to Chrome Web Store) + +## MCP Server Integration + +kib includes an MCP server that gives AI assistants direct access to your knowledge base. Supported clients: Claude Code, Claude Desktop, Cursor. + +Configure automatically: +kib init # auto-configures MCP for detected clients +kib mcp # configure MCP without re-initializing + +Manual configuration: +{ + "mcpServers": { + "kib": { + "command": "kib", + "args": ["serve"], + "cwd": "/path/to/your/vault" + } + } +} + +## LLM Providers + +Anthropic (ANTHROPIC_API_KEY), OpenAI (OPENAI_API_KEY), Ollama (local, auto-detected). + +## Architecture + +Vault is plain files on disk. No database. No lock-in. Version with git. + +Vault structure: +- .kb/ — manifest, config, cache, skills +- raw/ — ingested source material (never modified) +- wiki/ — compiled articles, INDEX.md, GRAPH.md +- inbox/ — drop zone for auto-ingest via kib watch + +## Links + +- GitHub: https://github.com/keeganthomp/kib +- npm: https://www.npmjs.com/package/@kibhq/cli +- Website: https://kib.dev +- License: MIT +`; + +export function GET() { + return new Response(content, { + headers: { "Content-Type": "text/plain; charset=utf-8" }, + }); +} diff --git a/packages/web/src/app/opengraph-image.png b/packages/web/src/app/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..cd07488e3355af69b1fb1608df382c6583b2237a GIT binary patch literal 12765 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 g|2Gvl{(!1(cyi&_Q*PftAXS9+ -