Celeste CLI · v1.9.301 / 13
Open Source · MIT · Go 1.26+
CELESTE CLI
Graph-Powered Code Intelligence for AI Development
v1.9.3 Go 1.26+ MIT 54 MB binary Zero runtime deps
Presenterwhykusanagi
Repositorygithub.com/whykusanagi/celeste-cli
Companionceleste-for-claude · celeste-stopwords
Character artwork by ikawasa23 · x.com/ikawasa23
The Product02 / 13
Meet Celeste
celeste · ~/Development/grafana
✨ Celeste CLI Grok · grok-4-1-fast · Press Ctrl+C to exit
find the auth session handling code
1. loadUser — features/profile/state/actions.ts:37 [14% match, edges=14]
2. revokeUserSession — features/profile/api.ts:31 [13% match, edges=7]
3. loadSessions — features/profile/api.ts:27 [14% match, edges=7]
code_search done 0.1s
◆ tokens: 8.4K / 2.0M ░░░░░░░░░░ 0%  │  compact: 0  │  turn: 1
Type a message or 'help'...
Skills: enabled (45 loaded)
Backend: grok | Model: grok-4-1-fast
Last completed: code_search
Hint: type `skills` to browse available tool functions.
Ready (10.7s · ↑7.9k ↓184)
An Agentic AI Coding Assistant
Celeste is a standalone Go binary (54MB, zero deps) that combines a premium corruption-aesthetic TUI with graph-based code intelligence. She indexes your codebase into a persistent code graph, then serves semantic search, structural code review, and dependency analysis — locally, offline, no embeddings needed.
Built for Claude Code & Cursor
Via MCP, Celeste exposes her code graph directly to Claude Code, Cursor, or any MCP client. Five direct tools (celeste_index, celeste_code_search, celeste_code_review, celeste_code_graph, celeste_code_symbols) return verbatim results with no chat-LLM round-trip.
A Companion, Not a Replacement
Celeste doesn't replace your LLM — she augments it. Claude stays in control; Celeste provides the graph intelligence. Three runtime modes: interactive Chat, autonomous Agent, and Orchestrator with built-in debate between two models.
The Problem03 / 13
Code Search Is Broken
What grep gives you
Flat text matches with no call-graph context. "query" matches JQueryStatic as #2 before any real database code.
No way to distinguish tests from implementation. mockHandler ranks the same as handleRequest.
Ubiquitous tokens ("get", "set", "error") appear in >30% of symbols, polluting every result set.
Library name pollution: jQuery decomposes into ["j","query","static"]. Framework nouns become misleading shingles.
Can't answer "which functions call which?" — only character-level pattern matching, no structural awareness.
What Celeste v1.9.3 gives you
MinHash + BM25 fusion — 128-slot semantic fingerprint over camelCase/snake_case tokens, types, body identifiers, and doc keywords.
Structural rerank — edge density, kind boosts, and path filter automatically demote test/mock code.
Stopwords v1.0.0 — statistically derived from 32 OSS repos. Filters noise before MinHash. JQueryStatic is gone.
Call-graph edges — tree-sitter CGo parses 10 languages. Understand which functions actually call which.
No embeddings needed — MinHash runs at parse time. Zero API calls, zero vectors stored, fully offline capable.
BEFORE: 22 / 50 relevant 44% AFTER: 35 / 50 relevant 70% (+59%)
grafana · 77,420 symbols · 5 queries · top 10 per query no embeddings · no vector DB · offline
Code Graph04 / 13
The Code Graph
Query
"find the auth session handling code"
loadUser ranks #1 — it's a hub node with 12 edges and 4 callers
Cross-cluster call to QueryBuilder reveals the auth → database relationship
Test nodes (mockHandler, assertEq) automatically demoted in ranking
Celeste code graph showing auth, database, HTTP, and test clusters with cross-cluster call edges AUTH DATABASE HTTP TEST (muted) validateSession refreshSession checkToken loadUser 12 edges · 4 callers ConnectionPool Transaction MySQLQuery QueryBuilder ExecContext handleRequest isLocalUrl mwFromHandler mockHandler testSetup assertEq LEGEND function interface hub node type/struct cross-cluster call test (demoted)
grafana · 57,497 symbols 13,543 call edges MinHash + BM25 fusion Go · Python · Rust · TS · Java · C · C++ · Ruby graph snapshots · change impact
Search Quality05 / 13
Precision That Ships
22/50 → 35/50
relevant results across 5 benchmark queries (top 10 per query)
+59%
authentication session token validate Find the login code
2/10 8/10
#1 result was JQueryStatic — jQuery splits into tokens "j"+"query"+"static", false-matching the search term
loadUser loadSessions revokeUserSession — real session API. BM25 IDF broke the tie.
http request handler middleware Find HTTP handlers
0/10 6/10
All 10 results from mocks/server/handlers/ — zero production code in top 10
Real handlers rank first. Mocks auto-demoted via path-based test detection
database connection pool query Find database code
4/10 7/10
JQueryStatic at rank #2 — library name decomposition polluted results
All data-query types: ZipkinQuery TempoDataQuery QueriesTab
splitCamelCase fix
Library names like jQuery no longer decompose into misleading search tokens
BM25 + Stopwords
IDF scoring surfaces rare, meaningful tokens. 500 stop words filter noise before MinHash.
Path-based test filter
Files in mock/ test/ *_test.* automatically demoted in ranking
Search Pipeline06 / 13
How Search Works
Your query enters two parallel paths. MinHash compares token fingerprints for structural similarity. BM25 scores how rare and relevant each token is. The results merge via Reciprocal Rank Fusion, then get reranked by call-graph structure.
Celeste search pipeline: MinHash path, BM25 path, RRF fusion, structural rerank, path filter, top-K MINHASH BM25 OUTPUT Query user input splitIdent camel + snake Stopwords <500 entries MinHash 128 hashes LSH Bands 64×2 config 20× speedup Jaccard candidates Token Store SQLite indexed BM25 IDF-weighted RRF k=60 Struct Rerank edge · kind · tokens Path Filter test/mock demotion Top-K Results ranked · scored no embeddings · no vector store · no API calls at search time · pure Go
MinHash Path
Splits identifiers by camelCase/snake_case, removes stop words, then hashes each token set into a 128-slot fingerprint. LSH band tables make lookup 20x faster than brute-force comparison.
BM25 Path
Scores each token by how rare it is across the codebase (IDF). "session" in a query is worth more than "get" because it appears in fewer symbols. Stored in a SQLite inverted index.
Fusion + Rerank
RRF merges both ranked lists without needing to normalize scores. Then structural reranking boosts symbols with more call-graph edges and demotes test/mock paths.
MCP Tools07 / 13
No Middleman
BEFORE AFTER v1.9.3 Claude Code celeste serve Chat LLM round-trip LLM summarizes response truncated · lossy · slow Claude Code celeste serve (MCP) celeste_code_search verbatim result no max_tokens ceiling · streaming progress
5 Direct MCP Tools
celeste_index celeste_code_search celeste_code_review celeste_code_graph celeste_code_symbols
Streaming Progress
Reindex notifications stream in real-time. Claude Code sees "Indexed 4,231 symbols..." as it happens.
No LLM Round-trip
Direct call returns raw codegraph results. No max_tokens ceiling. No lossy summarization.
8 Total MCP Tools
5 direct codegraph + 3 persona tools. Served by celeste serve on localhost.
.grimoire · Project Memory08 / 13
Project Memory
# .grimoire — auto-initialized on first run, git-stamped
project: celeste-stopwords
version: 0.1.0
git_sha: 39cd8fe
indexed_at: 2026-04-13T09:15:22Z
@include: ./docs/architecture.grimoire
memories:
- "Pipeline uses celeste codegraph for tokenization"
- "Acceptance: <500 stop words, >30% FP reduction"
- "Corpus: 32 OSS repos, Apache-2.0 or MIT only"
hooks:
pre_tool: ["go vet ./..."]
post_write: ["go build ./..."]
⚠ grimoire is 3 commits behind HEAD — run celeste init to refresh
Memories
Persistent project facts injected into every LLM system prompt. Survive session resets. Git-stamped for provenance.
Sessions
JSONL auto-save with resume. Browse and reload any past conversation. Full message history with timestamps.
Checkpoints
File-level undo/revert via snapshot backup on every write. /revert rolls back any agent change.
@include Composition
Compose multiple .grimoire fragments. Monorepo teams split context by subsystem and merge at runtime.
Staleness tracking warns when grimoire is older than recent commits. Auto-reinit on celeste init.
Runtime Modes09 / 13
Four Ways to Work
Chat
celeste chat
Interactive with auto-looping tool calls. 50-turn safety cap.
$ celeste chat
Celeste v1.9.3 · codegraph loaded
You: find database pool code
[code_search] → ConnectionPool...
Agent
celeste agent --goal "..."
Autonomous multi-turn with planning, file I/O, checkpointing.
$ celeste agent --goal "fix retry"
[read_file] retry.go
[patch_file] backoff fix applied
[checkpoint] saved
Subagent DAG
NEW
spawn_agent task_id: depends_on:
Element-named agents (地火水光闇風) with auto-detected DAG dependencies.
✓ 〔火 hi〕 ch1.txt 15.6s
✓ 〔水 mizu〕 ch2.txt 31.7s
✓ 〔地 chi〕 ch3.txt 48.0s
DAG: ch2→ch1, ch3→ch1,ch2
Orchestrator
/orchestrate <goal>
Agent + reviewer model debate loop. Production-grade output.
You: /orchestrate refactor auth
[agent] drafts implementation
[reviewer] finds edge case
consensus: 2 rounds
Subagent DAG auto-detects task dependencies from goal text, sequences execution, and recovers partial results on failure. Orchestrator adds a debate/review loop — no other open-source CLI offers either.
Tools & Providers10 / 13
Built-In Power
45+ Built-in Tools · 7 Categories
Dev Tools
15+
bash shell execution · read_file write_file patch_file
search_files regex · list_dir · git_status git_log
permissions · spawn_agent · checkpoint
Code Intelligence
6
code_search MinHash+BM25 semantic
code_review structural 6-category
code_graph callers/callees · code_symbols list
extended_thinking · code_impact
Direct MCP
5
celeste_index rebuild graph
celeste_code_search verbatim results
celeste_code_review no LLM round-trip
celeste_code_graph · celeste_code_symbols
🌐
Web
8
web_search · web_fetch scrape pages
weather · currency conversion
twitch_stream · youtube · qr_code · image_gen
🔒
Crypto & Security
7
ipfs_pin · alchemy blockchain query
wallet_monitor balance tracking
hash_gen · uuid · password_gen · base64
🎵
Audio / TTS
NEW
generate_speech ElevenLabs TTS
sound_effect · mix ffmpeg multi-track
audio_render project timeline · batch · Gantt viz
📋
Productivity
4
reminders scheduled alerts · notes persistent scratch · todo task tracking · all stored locally in ~/.celeste
7 LLM Providers
Grok / xAI
DEFAULT · 2M context · grok-4-1-fast
OpenAI
gpt-4.1-mini / gpt-4.1
Anthropic
native SDK · prompt caching
Google Gemini
gemini-2.5-flash · free tier
Venice.ai
NSFW · image generation
Vertex AI
enterprise · GCP project
OpenRouter
multi-provider · parallel fn calls
Zero runtime deps · 54 MB binary · offline capable
Architecture11 / 13
Under the Hood
Celeste CLI layered architecture: TUI, LLM Backends, Tool System, Codegraph Engine, MCP Server, Persistence TUI — Bubble Tea · flicker-free · corrupted theme · markdown · streaming LLM Backends (7) — Grok · OpenAI · Anthropic · Gemini · Venice · Vertex · OpenRouter Tool System (40+) — Dev · Web · Crypto · Productivity · Blockchain · Git · Permissions Codegraph Engine SQLite store MinHash+BM25 LSH 64×2 tree-sitter 10L stopwords v1.0 struct rerank MCP Server (8 tools) 3 persona tools 5 direct codegraph tools streaming progress notifs localhost server Persistence — sessions · memories · grimoire · checkpoints · codegraph.db
Competitive Positioning12 / 13
Why Celeste
Feature Celeste v1.9.3 OpenClaw gptme Aider
Language / Runtime Go (compiled) Node.js Python Python
Deploy size 54 MB binary ~393 MB + node ~150 MB + py ~80 MB + py
Code graph MinHash + BM25 + tree-sitter (10 langs) embeddings only none none
Semantic search no embeddings, pure MinHash vector DB required none none
Code review structural (6 categories) LLM only none none
MCP server 8 tools, 5 direct codegraph partial none none
Runtime modes Chat · Agent · DAG Subagents · Orchestrator Chat only Chat + Agent Chat only
Multi-agent DAG dependencies · element-named none none none
Personality Celeste (lore, grimoire) none none none
Embeddings needed ✓ none required required n/a n/a
The only open-source AI coding tool that combines graph-based code intelligence (10 languages), DAG-orchestrated subagents, and a companion personality — no embeddings, no runtime deps, single binary.
Get Started13 / 13
Open Source · MIT Licensed
GET STARTED
# install
go install github.com/whykusanagi/celeste-cli/cmd/celeste@v1.9.3
# first run
celeste config --set-key $XAI_KEY
celeste chat
github.com/whykusanagi/celeste-cli
github.com/whykusanagi/celeste-for-claude
github.com/whykusanagi/celeste-stopwords · CC BY 4.0
Built bywhykusanagi
LicenseMIT · open source
Characterikawasa23
Versionv1.9.3 · Go 1.26+
whykusanagi