Repository navigation
The release that stops lying. Every terminal failure now returns a designed error instead of a fake success; the token pool is self-healing with a quarantine lifecycle; the container ships hardened, bootable and multi-arch on GHCR — and there's an explicit exit door to the official API if the bridge ever breaks.
v5.0...v6.0: 155+ commits · 7 contributors
Highlights
Token pool lifecycle (PR #58, closes #32) — a 401 quarantines a token immediately; repeated 403s escalate to quarantine (DEEPSEEKER_QUARANTINE_AFTER_403); nothing leaves quarantine except Restore on the dashboard, and a stale in-flight success can no longer lift it. Pool selection is least-in-flight with idle-oldest tie-break under a soft per-token concurrency cap — rate-limited tokens recover by cooldown instead of starving. New pool-state view on the dashboard with masked aliases.
Honest failures (PR #59, closes #33) — every blocking terminal empty-SSE now returns a designed OpenAI/Anthropic 502 with a trace id (error.request_id / [trace: …]) and a redacted body; retries rotate tokens with jittered backoff and a bounded budget instead of re-rolling the same poisoned session. Upstream SSE errors are parsed and surfaced with their real status instead of being misreported as context-limit failures. Client aborts purge stored session rows; rollover decisions serialize under the per-chat lock; blocking SQLite helpers run off the event loop; token billing uses the cleaned completion text.
Client compatibility — one completion id/created per OpenAI stream with strict chunk fields (index, model), so Vercel AI SDK clients (Trilium, Zed) stop rejecting frames (PR #38, #39); usage chunk emitted in streaming so gateways (New API, sub2api) bill correctly (PR #31); bare DSML markers and plural function_calls containers no longer leak into replies, and chunks carry a per-chunk index (PR #36); context rollover restores system prompt + tools and keeps continuity across sessions (PR #34, #35); proper Responses-API format instead of chat completions (PR #42); dsh recovers agent-harness context-limit failures with summary rollover (PR #67).
Security defaults (PR #60) — an unset API key is generated, printed once and persisted; default admin credentials are refused on non-loopback binds and startup names the fix (DEEPSEEKER_ALLOW_DEFAULT_ADMIN=1 is the explicit override). The container runs as an unprivileged user (uid 10001) with only /app/data writable — and the entrypoint is fixed, so CMD ["deeperseeker"] resolves via /app/.venv/bin on PATH: the image boots as-is for the first time.
Multi-arch release images on GHCR (PR #61) — every v* tag publishes linux/amd64 + linux/arm64 images to ghcr.io/amancode22/deeperseeker (tags 6.0 / 6 / latest), digest printed in the run log, with image HEALTHCHECK and a startup identity line (version + build commit). Version is single-sourced from pyproject.toml (PR #66).
Deep health probe + honest status (PR #62) — GET /health?deep=1 (auth required) performs one real upstream round trip including PoW and reports reachability + latency; the shallow check stays public. The README gains the risk banner, no-public-relays stance, takedown policy, a status table backed by the deep probe, and the client compatibility matrix.
Dashboard usage stats (PR #63) — requests, input/output tokens and estimated cost per day × per masked key for the last 30 days; streamed retries count once; cost labeled as a flat-tariff estimate.
Official-API passthrough — the exit door (PR #64) — DEEPSEEKER_MODE=official + DEEPSEEKER_OFFICIAL_API_KEY serves chat/messages/models from the official DeepSeek API. Explicit mode, no silent fallback.
Project infrastructure (PR #65, #66) — CHANGELOG, issue templates (bug / ban report / feature / deploy-help), SECURITY.md, CONTRIBUTING.md; English-only README with a separate README.md.cn. Supply chain rebuilt on uv + requirements*.in lockfile flow, ruff enforcement, CI and Dependabot (PR #40 plus 15 dependency bumps).
Images — pull by digest
v6.0 is published multi-arch (linux/amd64 + linux/arm64) at ghcr.io/amancode22/deeperseeker, tags 6.0 / 6 / latest. For reproducible pulls, pin the per-platform digests of this release:
# linux/amd64
docker pull ghcr.io/amancode22/deeperseeker:6.0@sha256:6c0a33b2a730c632db8389f97e6af0d639d8ca3545fa6f3a4d4db744dba46de4
# linux/arm64
docker pull ghcr.io/amancode22/deeperseeker:6.0@sha256:55a78323aeeeed81023fce26942137b3b67501aa35946fc63e3d3332cbb44cdeThe same digests also pin latest (e.g. ghcr.io/amancode22/deeperseeker:latest@sha256:6c0a…). Or just pull the tag and let Docker select your platform from the manifest list: docker pull ghcr.io/amancode22/deeperseeker:6.0.
Upgrading
- Pull
ghcr.io/amancode22/deeperseeker:6.0(digests above). - If you bind to a non-loopback interface, set real admin credentials — startup refuses defaults and names the fix — or pass
DEEPSEEKER_ALLOW_DEFAULT_ADMIN=1deliberately. - Quarantined tokens stay quarantined until you hit Restore on the dashboard. That is by design.
- New optional environment:
DEEPSEEKER_QUARANTINE_AFTER_403,DEEPSEEKER_ALLOW_DEFAULT_ADMIN,DEEPSEEKER_MODE,DEEPSEEKER_OFFICIAL_API_KEY. - Keep
GET /healthfor liveness; use/health?deep=1(auth) when you want a real upstream verification.
What's Changed
- Stage 0 — Guardrails: request identity, proxy trust, and failover by @AmanCode22 in #26
- Show token alias in access logs by @A-Alomari in #25
- Fix DSML tool-call start-token leakage with a plausibility check by @A-Alomari in #28
- fix: emit usage chunk in OpenAI streaming responses by @Horizon00001 in #31
- fix: parse upstream SSE errors instead of blaming the context limit by @A-Alomari in #34
- Fix/context rollover by @A-Alomari in #35
- fix: stop leaking bare DSML markers and plural function_calls containers into streamed text by @Horizon00001 in #36
- Stage 1 of revamp by @AmanCode22 in #39
- fix: add index to chat completions streaming chunks by @ymf2317-tech in #38
- chore(supply-chain): migrate to uv + pyproject.toml with hatchling; add CI, Dependabot, and ruff by @AmanCode22 in #40
- chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 by @dependabot[bot] in #41
- chore(deps-dev): bump pip-tools from 7.6.1 to 7.6.2 by @dependabot[bot] in #49
- chore(deps): bump aiohttp from 3.14.3 to 3.14.4 by @dependabot[bot] in #48
- chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0 by @dependabot[bot] in #43
- chore(deps): bump fastapi from 0.142.2 to 0.143.0 by @dependabot[bot] in #44
- chore(deps-dev): bump pip-tools from 7.6.1 to 7.6.2 by @dependabot[bot] in #45
- chore(deps): bump fastapi from 0.142.2 to 0.143.0 by @dependabot[bot] in #46
- chore(deps): bump aiohttp from 3.14.3 to 3.14.5 by @dependabot[bot] in #47
- fix: return proper openai responses format instead of chat completions by @artyom08-dev in #42
- chore(deps): bump fastapi from 0.143.0 to 0.143.2 by @dependabot[bot] in #51
- chore(deps-dev): bump ruff from 0.16.10 to 0.17.1 by @dependabot[bot] in #52
- chore(deps): bump fastapi from 0.142.2 to 0.143.2 by @dependabot[bot] in #53
- chore(deps): bump playwright from 1.63.0 to 1.64.0 by @dependabot[bot] in #54
- chore(deps): bump playwright from 1.63.0 to 1.64.0 by @dependabot[bot] in #55
- chore(deps-dev): bump ruff from 0.16.10 to 0.17.1 by @dependabot[bot] in #56
- chore(deps): bump aiohttp from 3.14.3 to 3.14.4 by @dependabot[bot] in #57
- 401/403 pool lifecycle + quarantine + dashboard pool view by @AmanCode22 in #58
- Shaped 502 on terminal empty-SSE by @AmanCode22 in #59
- Refuse exposed default credentials + non-root container by @AmanCode22 in #60
- Multi-arch release workflow → ghcr.io by @AmanCode22 in #61
- Deep health probe + honest status table by @AmanCode22 in #62
- Dashboard usage stats page by @AmanCode22 in #63
- Official-API passthrough mode by @AmanCode22 in #64
- Changelog, issue templates, SECURITY + CONTRIBUTING by @AmanCode22 in #65
- Image version single-sourced from pyproject.toml (yaml-only builds) + English-only README + separate README.md.cn by @AmanCode22 in #66
- dsh fix: recover agent-harness context-limit failures with summary rollover by @AmanCode22 in #67
- chore(deps): bump certifi from 2026.7.22 to 2026.10.19 by @dependabot[bot] in #68
New Contributors
- @A-Alomari made their first contribution in #25
- @Horizon00001 made their first contribution in #31
- @ymf2317-tech made their first contribution in #38
- @dependabot[bot] made their first contribution in #41
- @artyom08-dev made their first contribution in #42
Full Changelog: v5.0...v6.0