by LichAmnesia
OpenSeek - 广度求索: open-source TUI coding agent with multi-provider routing, MCP, LSP, and Plan/Agent/YOLO modes.
# Add to your Claude Code skills
git clone https://github.com/LichAmnesia/openseekNo comments yet. Be the first to share your thoughts!
English | 中文
Want to appear here? Open an issue.
Modern AI coding tools — Claude Code, Codex, Cursor — are great but closed-source and lock you to specific providers. OpenSeek gives you the same agentic terminal experience, open-source, with full BYOK freedom across 27 built-in providers and a transparent cost meter.
tsserver, rust-analyzer, pyright, gopls, … inline diagnostics during editsopenseek serve --http for IDE bridges & CI$/Mtok pricing, real-time spend tracking, cache-hit accountingBun.spawn / Bun.serve / Bun.file; node alone cannot run it. Even if you install via npm i -g, the openseek command shells out to bun at startup and will fail with env: bun: No such file or directory if bun is not on your PATH.curl -fsSL https://bun.sh/install | bash # any Unix
brew install oven-sh/bun/bun # macOS (Homebrew)
Verify: bun --version should print ≥ 1.3.0.
Pick one. All three put openseek on your PATH.
# A. npm
npm install -g openseek
# B. bun (same registry as A, smoother if you already use bun)
bun add -g openseek
# C. From source (recommended while iterating)
git clone https://github.com/LichAmnesia/openseek.git
cd openseek
bun install
bun run build
ln -sf "$PWD/bin/openseek" ~/.local/bin/openseek
openseek # start the TUI
openseek setup # first-run wizard — pick provider + paste API key
openseek doctor # print resolved config + per-field source layer
openseek serve --http # headless HTTP/SSE on :7117
The fastest way to try every model family from one key: register a RelayRouter account, copy the key, pick a group on the dashboard, and point OpenSeek at it.
# Claude family — key on a "Claude" group (e.g. Claude 2x)
OPENSEEK_PROVIDER=relayrouter-anthropic \
OPENSEEK_API_KEY=sk-... \
OPENSEEK_MODEL=claude-sonnet-4-6 \
openseek
# GPT / Codex — key on the "Codex 0.75x" group (most permissive)
OPENSEEK_PROVIDER=relayrouter \
OPENSEEK_API_KEY=sk-... \
OPENSEEK_MODEL=gpt-5.4 \
openseek
→ Sign up here to get RelayRouter credit.
OpenSeek resolves each setting (provider / model / API key / base URL) from the highest layer that defines it. Higher layers override lower ones.
| # | Layer | Location | Notes |
|---|---|---|---|
| 1 | env | OPENSEEK_PROVIDER, OPENSEEK_MODEL, OPENSEEK_API_KEY, OPENSEEK_BASE_URL | Plus provider-specific keys (DEEPSEEK_API_KEY, ANTHROPIC_API_KEY, etc.) |
| 2 | project overlay | <workspace>/.openseek/config.toml | Sandboxed — only model is honored. api_key / base_url / provider are silently dropped so a checked-in overlay can't leak secrets or hijack the provider. |
| 3 | user config | ~/.openseek/config.toml | Persisted by the first-run wizard (openseek setup). 0600 perms. |
| 4 | default | hard-coded fallbacks | What ships in the binary. |
Run openseek doctor to see exactly where each value resolved from:
$ openseek doctor
Resolved configuration:
provider deepseek ← user (~/.openseek/config.toml)
model deepseek-v4-flash ← user (~/.openseek/config.toml)
api_key sk-a…b8e2 ← env
base_url (provider default) ← built-in default
Precedence (highest first):
1. env OPENSEEK_PROVIDER / OPENSEEK_MODEL / OPENSEEK_API_KEY / OPENSEEK_BASE_URL
2. project <workspace>/.openseek/config.toml (model only — secrets ignored)
3. user ~/.openseek/config.toml
4. default built-in fallbacks
Inside the TUI, /help lists all slash commands grouped by category; /help <name> shows details for one command, /help <category> filters to a single category (session / config / tools / git / agent / skills / diagnostics / advanced / …), and /help all is a flat list.
bun install
bun run dev # boots the CLI directly from TypeScript sources, no build needed
bun run lint # biome
bun run typecheck # tsc --noEmit
bun run test # bun test
bun run verify # all three
openseek/
├── packages/ 14 workspace packages
│ ├── core/ shared leaf utilities
│ ├── provider/ 27 provider adapters (Vercel ai SDK)
│ ├── session/ main agent loop + compaction strategies
│ ├── tool/ built-in tool registry
│ ├── command/ slash-command registry
│ ├── tui/ @opentui/solid terminal renderer
│ ├── mcp/ MCP client (stdio / SSE / websocket)
│ ├── skill/ skill loader
│ ├── agent/ sub-agents + RLM fan-out
│ ├── memory/ SessionMemory
│ ├── plugin/ plugin protocol
│ ├── server/ HTTP / SSE runtime API
│ ├── lsp/ LSP client (tsserver, rust-analyzer, pyright, ...)
│ └── cli/ entrypoint
├── scripts/ init / build / lint / typecheck / test / verify
├── tests/ cross-package smoke / e2e / coverage gate
├── install/ curl-bash installer + Brewfile + Nix expression
├── bin/openseek executable shim
└── package.json bun workspaces root
MIT — see LICENSE.