LynnMerkyor/Lynn has 36 GitHub stars and 5 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 13:48 UTC. Last push 2026-10-31.
Lynn GitHub 镜像仓 · Qwen3.8-27B Coder390 EfficientThink 本地 GGUF(llama.cpp Q2/Q3,内置 Q4 MTP)· 主仓 https://github.com/MerkyorLynn/Lynn · 下载 https://download.merkyorlynn.com/download.html
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README_EN.md
Original
Lynn
Open-source desktop AI assistant · see where every chat & task stands · realtime voice · long-term memory
An open-source desktop AI agent. The main window keeps you focused on the conversation — see how far each chat has gotten and what still needs attention, manage files, and review every change it makes. When you want to run several tasks at once, Lynn's CLI can act as a background worker driven by Codex, Claude, Qwen, and other tools.
中文版 (默认) | English
Lynn V0.87.5 · Step 5 Cloud + Coder390 Local
Lynn is an open-source AI agent with a desktop GUI and standalone CLI for search, files, coding and realtime voice. It also runs as a headless worker for other agents and CI. GUI and CLI are both V0.87.5; the default working model is Step 5 Preview.
Download mirror (recommended) · V0.87.5 release notes · Primary GitHub · Backup GitHub · Gitee
Current Models and Runtime
| Purpose | Current model | Access |
|---|---|---|
| Default chat, coding and tool tasks | Step 5 Preview (step-5-preview) |
Brain-hosted by default in GUI / CLI |
| Default cloud image understanding | Step 5 native vision | Send images directly; no separate vision API key |
| Realtime voice conversation | StepAudio 2.5 Realtime (stepaudio-2.5-realtime) |
GUI microphone; /voice or lynn voice inside CLI chat |
| Local text and coding | Qwen3.8-27B Coder390 EfficientThink | Explicit installation and startup of llama.cpp Q2 / Q3 in Settings |
| Your own models | User-configured providers or compatible endpoints | Select in model settings; route aliases are not actual model names |
Local Models: Coder390 Q2 / Q3
Source: Merkyor / Qwen3.8-27B-Coder390-EfficientThink. Lynn uses the repository's GGUF/ directory, not the NInfer variant.
| Tier | Recommended capacity | Model file size | Initial context |
|---|---|---|---|
| Coder390 Q2 | 16GB GPU VRAM / Apple unified memory | 13.28GB | 4K, one slot |
| Coder390 Q3 | 24GB or above; at least 23.5GiB reported | 17.30GB | 8K, one slot |
- Both are llama.cpp GGUF with built-in Q4 MTP. No separate DFlash2 draft, NInfer runtime or local vision component is installed.
- Apple Silicon uses unified-memory capacity. NVIDIA uses the largest single GPU's VRAM, not summed GPUs or system RAM.
- Installation and startup are blocked below 14GiB or when detection fails. The 14–under-16GiB range only meets Q2's minimum; it is not the recommended tier.
- File size is not runtime memory use: KV cache, compute buffers and the OS need additional headroom.
- Installation and startup require explicit user action. Switching tiers preserves existing files; Settings offers Q2 / Q3 rather than recommending the old 9B / 4B models.
V0.87.5 Highlights
- Selectable CLI commands: use Up/Down after
/, then Tab or Enter to fill the selected command, with scrolling and keyboard navigation. - Preserved settings drafts: retain per-agent unsaved changes and experience lists across settings navigation and model configuration refreshes.
- More reliable sessions: fix concurrent tool-result matching, bridge session queues, context compaction and reply rendering.
- Recoverable local startup: show startup timeouts, support manual retry and ignore stale process exit events.
- File and interface fixes: strengthen file/preview boundaries, confirm destructive actions and improve keyboard access to menus and settings.
- GUI and CLI updated together: refresh desktop and bundled runtime dependencies while retaining Step 5, realtime voice and Coder390 Q2/Q3.
Retained conversation features
- Long reasoning stays connected: OpenAI-compatible endpoints and the built-in Qwen bridge share a 600-second first-chunk timeout, a 600-second resettable idle timeout and no default model-wide deadline. Continued output can run beyond ten minutes. Saved settings and explicit environment overrides remain authoritative; settings and
Lynn doctor --offlineshow effective values and their sources. - No punctuation-based continuations: one recovery attempt is allowed for an explicit
finish_reason=lengthor a reasoning-only empty answer, not because an English answer is short. - Delete conversations permanently: confirmation-based deletion, individual archived deletion and archive clearing stop in-flight work and remove session files so late output cannot resurrect them. See the timeout and deletion guide.
Retained V0.87.1 model and tool capabilities:
- The model supplies parameters; tools execute them. Weather, sports, markets and currency tools receive model-provided locations, dates, leagues, tickers and currency pairs instead of extracting entities from whole questions. Compound locations retain their meaning; the model can supply a parent location or coordinates when needed.
- One default across GUI / CLI: Step 5 handles ordinary chat, coding, tool tasks and cloud image understanding.
- Realtime voice restored: StepAudio 2.5 Realtime uses the shared Brain-hosted path. Enter voice inside CLI chat and return with
Ctrl+C. - Review and evidence: manual review now carries device authentication. Real image recognition, manual review and concurrent review are verified against installed packages; failure fallbacks do not count as successful results.
- Explicit local requirements: recommend the Coder390 tier by detected capacity, verify pinned sizes and SHA-256 values, and preserve older files and manual import.
Non-blocking review-relevance and redundant vision-completion observations are retained in the follow-up list. Historical models and research results later in this README do not describe current defaults or Coder390 benchmark results.
GUI and CLI
Use the desktop for conversations, files, task progress and change acceptance. Use the CLI for terminal chat, coding and headless workers. Both share the default model and tool-execution capabilities. JSON / JSONL output lets terminals, CI and other agents call Lynn without automating desktop windows.
CLI Quick Install
# 1. Node requirement: Node.js 20 LTS or 22 LTS with npm.
# macOS: brew install node@20
# macOS/Linux: nvm install 20 && nvm use 20
# Windows: winget install OpenJS.NodeJS.LTS
# 2. Install or update from the Lynn mirror.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.87.5.tgz?rev=20261031"
# 3. Launch.
Lynn # interactive chat TUI; type /voice or lynn voice for realtime voice
Lynn code # coding-agent TUI
Lynn --version # should print 0.87.5
Lynn agents # copyable headless worker commands for other agents
Default Brain V2 route: Step 5 Preview (step-5-preview) for normal GUI/CLI chat, Lynn -p, and coding execution. Voice is Brain-hosted StepFun Realtime (stepaudio-2.5-realtime) by default: the GUI microphone and /voice / lynn voice inside the CLI chat enter continuous realtime conversation with live status and waveform. Local manager routes remain explicit experiments and do not take over the ordinary GUI/CLI path.
Long runs follow a Reasonix-style prefix-cache discipline: stable instructions, tool specs, runtime constraints, and resume summaries stay in deterministic context layers so turns do not reorder the cacheable prefix. Cache hits now appear as prefix-cache ... hit in usage, sessions, replay, and Lynn cache doctor --json, not as an anxiety-inducing context meter.
Machine-call contract:
Lynn code -p "fix tests, run the suite, summarize the diff" \
--json \
--cwd /path/to/worktree \
--approval yolo \
--sandbox danger-full-access \
--save-session
For exhaustive best-effort work, use --best (or /goal / /best in the TUI). Lynn enables a 300-step budget, ultra task decomposition, atomic workers, adversarial verification, auto-verify, checkpoints/resume, and runtime compaction. The harness does not choose the final answer for the model; it only decomposes, schedules, verifies, repairs, and prevents tool storms.
Agents should parse JSONL, not the human terminal TUI. See docs/ops/lynn-code-headless-agent-contract.md.
🆕 Recent Updates
The current version is V0.87.5; see the introduction for current models and installation requirements. The entries below are historical release notes. Their models, memory tiers and routing describe those older versions, not current installation recommendations.
Lynn v0.86.8 · 2026-09-08 · Kimi QR sign-in, conversation search and mobile continuation
- Kimi Datasource: sign in with your own account from MCP settings; the included official datasource connects automatically, with no Kimi CLI installation.
- MCP OAuth: HTTP/SSE discovery, PKCE, local callbacks and token refresh.
- Conversations and files: search saved message text and excerpts; use session-scoped file IDs and retain uploaded copies in the correct conversation.
- Lightweight automation: direct reminders and selected plugin actions alongside existing Agent tasks, with notifications and run history.
- Mobile continuation: opt-in QR pairing and revocation, existing conversations and file transfers; PWA installation requires HTTPS.
- Optional leaf shadows: a subtle interface layer, disabled by default.
Lynn v0.86.7 · 2026-09-07 · Hardware-adaptive local models and guided deployment
- Q3 / Q2 by GPU memory: Qwen3.8-27B EfficientThink SimPO: Q3 + Q4 DFlash2 for 24GB+ dedicated VRAM (18.18GB of model files), or Q2 + Q4 DFlash2 for 16GB dedicated VRAM (14.14GB). Q3 starts at 8K context and Q2 at 4K, with one slot. KV cache, compute buffers and the operating system need additional memory. Apple unified memory is evaluated separately; 16GB unified memory is not treated as 16GB dedicated VRAM.
- Complete installation: checks or installs compatible llama.cpp, verifies main and independent Q4 DFlash2 files by pinned size and SHA-256, then checks runtime health before switching models. Existing files are preserved.
- Guided recovery: model-card navigation, manual tier selection, pause/resume and a “Let Lynn help me deploy” action that prepares a diagnostic chat draft without sending it automatically.
- Separate runtime roles: DFlash2 uses draft-dflash, not draft-mtp. Windows keeps its existing unsigned NSIS distribution and bundled basic CPU runtime; the new GPU runtime is prepared after explicit consent.
Lynn v0.86.6 · 2026-09-05 · Reliable automation and long-conversation performance
- Keep early harness terminal events: completion/failure notifications arriving with the start response no longer leave the loop waiting; early process exit also settles waiters. Includes all v0.86.5 UI and architecture repairs.
- Keep complete answers after less-than comparisons: ordinary expressions such as “duration < 5 minutes” no longer trigger unfinished-tag filtering; full-answer chunk replay guards against recurrence.
- Lossless automation edits preserve monthly, range, step, one-shot, and interval schedules. Assigned models can be reset to the default.
- Saving and testing have separate outcomes: a failed test keeps the saved job ID and a persistent explanation; retries cannot create duplicate jobs.
- Isolated IM history prevents delayed responses or errors from a previous conversation from replacing the active one.
- Long conversations start with the latest 80 messages and load older pages on demand. Rich history is windowed, and long responses use size-aware rendering intervals.
- On-demand editor languages separate CodeMirror core from optional parsers, backed by an editor-entry size budget.
- Clearer boundaries and UI gates separate created tasks from templates, settings CSS by domain, review policy from execution, and CLI persistence from presentation. Screenshots initialize real translations and cover editing, complex schedules, and retry states.
Lynn v0.86.4 · 2026-09-01 · Automation UI and on-demand rendering
v0.86.4 Automation experience and frontend engineering update:
- Readable Automation UI in dark mode: templates, job cards, forms, status pills, and actions use theme-semantic colors instead of light-only surfaces and low-contrast text.
- Modular Automation surface: data access, draft state, the template library, and the editor are separate modules; Automation-specific CSS is no longer mixed into the shared Floating Panels stylesheet.
- Real on-demand renderer loading: Mermaid, Wardley, KaTeX, Markdown, and sanitization vendors load as separate asynchronous chunks, backed by a static dependency gate.
- Visual regression in the release gate: light and dark themes are checked at 1440×900, 1024×768, and 720×900 against six reviewed baselines.
- Existing Agent-loop contracts remain intact: Codex app-server auto-preflight, original-loop fallback, one-turn local-model recovery, empty-response cooldown, and GUI/CLI terminal-state tracing are preserved.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.86.4.tgz"
Lynn v0.86.3 · 2026-08-27 · Agent-loop stability and deterministic fallback
v0.86.3 agent-loop and cross-client reliability update:
- More reliable Codex harness auto-selection: when the optional Brain status endpoint is unavailable, Lynn proceeds to the authenticated Responses route preflight instead of declaring the harness unsupported. Explicit
--harness codexnow validates the current provider, model, and authentication too. Human-readable headless runs show the selected harness and reason before execution. - Local-model recovery is scoped to one turn: when the local 27B model returns no output, Brain can finish that turn without permanently changing the session's selected model. Queued follow-ups return to the user's original model.
- Cross-turn cooldown for empty/reasoning-only candidates: a candidate that stops without visible content is handed off immediately and put into a short cooldown, preventing the next turn from selecting the same unhealthy lane again.
- Paired CLI TUI history: when an Ink stream ends without a visible answer, Lynn no longer stores an empty assistant or leaves an unmatched user entry in model history. The UI shows a clear retry/model-switch message instead.
- Traceable GUI completion sources: normal, fallback, local-direct, and forced-close
turn_endevents now carrystreamSourcefor reliable diagnostics. - Current Feishu integration: the Feishu bridge now uses the current SDK Channel API while preserving messages, replies, files, and cards.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.86.3.tgz"
Lynn v0.86.2 · 2026-08-22 · Codex app-server harness and Agent lifecycle
v0.86.2 Agent harness and reliability update:
- Codex app-server harness for Lynn Code maps threads, turns, streaming events, plans, tool lifecycle, approval requests, compaction, and interruption into Lynn's Agent run state while preserving the original loop.
autois the default and decides before execution. Lynn validates the app-server executable, protocol, Brain Responses capability, authentication, and the active provider/model route; any failed check selects the original architecture before the task starts.- No feature regression in exchange for a new harness. Attachments keep the verified Lynn multimodal bridge,
--jsonkeeps per-tool audit events,ask/neverkeep strict approval semantics, and ultra multi-worker tasks keep the original loop. Explicit--harness codexis limited to the verified ordinaryyolo/on-failurepath and rejects incompatible combinations;--harness legacypins the original architecture. - GUI and CLI share a terminal run lifecycle for completed, failed, cancelled, partial, resumable, and tool-ledger state, reducing empty replies, double-finalization, and state left behind after cancellation.
- BYOK and Brain retain their routing ownership. BYOK keeps the user-selected provider/model; StepFun, DeepSeek V4 Flash, MiMo, GLM, and other Brain models remain Brain-routed independently of harness selection.
- Windows local GGUF works out of the box. The v0.86.2 Windows installer bundles a pinned
llama.cppruntime, required DLLs, its license, and SHA-256 manifest. The release gate extracts the final NSIS payload, loads a real GGUF, and completes two generations.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.86.2.tgz"
Lynn v0.86.1 · 2026-07-12 · GUI/CLI interaction and local-model management
v0.86.1 UX and reliability update:
- Busy Ctrl+C now cancels only the active Ink turn and keeps the REPL alive; the full Ink PTY gate requires cancellation within one second and a clean final exit.
- CLI history uses persistent
Staticoutput, streamed Markdown is batched, tool start/end share one row, and the input line has a visible movable cursor. - The default 27B Q4 imatrix MTP download reports real aggregate progress, shard count, speed, and ETA, with pause/resume/cancel/delete controls.
- Eligible devices can snooze the local-model recommendation for seven days or dismiss it permanently; low-spec devices remain free of proactive prompts.
- Session search is always visible, long chats have a jump-to-latest button, low-frequency composer controls live under More, and Stop gives immediate feedback.
- User-facing errors no longer expose opaque transport codes, and warm/dark theme secondary text now meets a stronger contrast baseline.
- High-stakes answers use heterogeneous review: DS V4 Flash remains the fast asynchronous reviewer, while a DS V4 concern on medical, legal, financial, or current-fact answers can trigger one time-bounded MiMo 2.5 Pro Token Plan arbitration. It never blocks or automatically rewrites the original answer, and both GUI and CLI expose the structured outcome.
- All V0.86 security boundaries remain enabled and covered by security, Agent regression, CLI100, GUI100, packaged, signing, and notarization gates.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.86.1.tgz"
Lynn v0.86.0 · 2026-07-12 · Security boundaries and runtime reliability
v0.86.0 security, runtime, and UX update:
- Model-driven browser sessions deny microphone, camera, location, notification, and storage access by default; navigation and subresources pass DNS/SSRF checks.
- Authorized execution remains inside the OS sandbox; SSH/cloud credentials, browser profiles, Lynn tokens, and agent configuration are deny-read paths.
- IPC trusts known window identities and rejects failures with trace IDs; local HTTP/WS validates Host, Origin, and the per-launch token.
- Windows finds
llama-serverthroughwhere.exe, while manual GGUF startup now reports real ready/failure, missing-runtime, timeout, crash, and port-conflict states. - Per-session prompt admission, explicit turn-end fallback tests, larger reconnect state, and removal of legacy internal retry state prevent cross-turn contamination.
- Brain now strips pseudo-tool markup across stream chunks while the client keeps its final defensive sanitizer.
- CLI streaming supports Ctrl+C cancellation, strict flags, command-level help, consistent non-TTY exits, and Windows-safe external worker argv execution.
- Fleet workers appear in Activity, voice shows RTT and traffic, renderer recovery is visible, and i18n/dialog focus gaps are closed.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.86.0.tgz"
Lynn v0.85.10 · 2026-07-11 · Session Progress and Agent reliability
v0.85.10 runtime and UX update:
- Clearer Session Progress: the right rail presents the current session once, collapses older details by default, and exposes explicit Open Session / New Branch actions with keyboard-accessible expansion state.
- No cross-turn transient state: each turn centrally resets tool, retry, parser, timer, sanitizer, and temporary-output state so retrying one prompt cannot pollute the next.
- Ordinary answers stay in chat: deliverable tools are exposed only for explicit reports, HTML, PDF, PPT, attachments, or exports; lists, world-building tables, code, and explanations remain normal messages.
- Fallbacks get real time budgets: Step, DS V4 Flash, MiMo Token Plan, local, and GLM candidates have bounded attempts, with reasoning-only and incomplete answers handed to the next candidate.
- Evidence tools are intent-scoped: lookup, citation, weather, market, score, and news prompts still get live tools; timeless planning and writing no longer trigger unnecessary searches.
- Architecture gates are stronger: WebSocket transport, layout control, and Engine/Agent boundary helpers are separated, with a runtime import-cycle gate and a real Session Progress component regression test.
- The local 27B Agent path stays intact: Q4 imatrix MTP download and
draft-mtpstartup remain the default; coding and tool tasks still enter the full Agent loop. - Compact empty states: the right rail grows with its content instead of stretching an empty history surface, and delayed patrol refreshes are cancelled when the rail unmounts.
- Packaging follows the real gate: macOS and Windows
distcommands enter the full release gate, including Agent regression, CLI100, and GUI100.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.10.tgz"
Lynn v0.85.8 · 2026-07-09 · Windows local-27B startup hotfix
v0.85.8 local-model hotfix:
- Fixes GitHub #2 Windows 27B startup failure: some Win11 environments ship a llama.cpp binary that does not support the v0.85.7 MTP / reasoning / KV-cache flags, so the model verified and then the server exited. Lynn now strips unsupported optional flags based on the local binary's actual help output.
- Main chat no longer looks like "nothing happened": the chat input listens for llama.cpp failed/crashed events, clears the optimistic starting state, and shows a visible error with a Settings handoff.
- Settings shows the real failure reason: the local-model panel now surfaces
child-exited, startup timeouts, and recent child process output. - Confirms #75
python3_not_foundis covered by the current path: desktop setup continues to use the Electron main-process downloader / manager, so clean installs do not require Python. - Keeps the v0.85.7 edge-model chain: the default local model remains the public 27B Coding Q4 imatrix MTP; low-config devices are not proactively prompted, and 9B / 4B remain explicit downgrade choices.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.8.tgz"
Lynn v0.85.7 · 2026-07-07 · 27B Coding Q4 MTP default edge model
v0.85.7 edge-model and release-flow update:
- Default local edge model is now public 27B Coding Q4 MTP: Settings recommends the
Qwen3.6-27B-DSV4Pro-GLM52-SFT-GPT55-RL-Coding-GGUFQ4 imatrix MTP four-shard GGUF, about 19.6GB. - Model links fixed: README, release notes, download pages, and app model entry points now link to the public ModelScope / HuggingFace GGUF mirrors.
- Low-config devices stay quiet: underpowered machines no longer get a proactive 27B install prompt; 9B / 4B remain explicit downgrade choices in Settings.
- Fixes local-model
python3_not_found: desktop setup uses the Electron main-process downloader first, so missing Python no longer blocks Settings → Models → load local model. - Release discipline tightened: every new release or hotfix must sync
LynnMerkyor/Lynn,MerkyorLynn/Lynn, Giteemerkyor/Lynn, and the Tencent download mirror;release:verify-remotesnow checks all three code remotes by default.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.7.tgz"
Lynn v0.85.6 · 2026-06-28 · local file-read fix + release gate coverage
v0.85.6 client fix and release coverage:
- Fixes IJV6WH explicit absolute file reads: when the user asks Lynn to read
/Users/.../main.tex, Lynn reads that file instead of falling back to the current workspace or reporting an empty directory. - Stops
file://meta-questions from triggering fake directory reads: questions like "why was the file:// protocol blocked?" are treated as explanation requests, not local prefetch requests. - Prevents previous file-task pollution: a prior ComfyUI,
main.tex, or other file task no longer leaks into the next ordinary question; regression coverage includes the ComfyUI → main.tex stale-answer path. - Handles large explicit files more safely: pointed local files use a capped preview so a huge LaTeX/code file does not freeze or flood the model context.
- Improves Windows path compatibility:
D:\...,D:/..., and%20encoded paths are treated as local file paths instead of URL/protocol text. - Stabilizes settings deep links: opening Model Services from chat or local-model prompts no longer occasionally lands on About; the installed-app gate now covers provider-list and model-removal regressions.
- Release gates included: this client build passed the requested CLI100 gate, packaged server / CLI smoke, remote CLI install smoke, macOS notarization/Gatekeeper checks, three-remote sync verification, and GitHub CI; daily life, public-service/legal, medical, education, travel, recruiting, office, industry ops, coding, and fiction-writing prompts now live in the same regression bank, so GUI and CLI are no longer relying on manual spot checks alone.
- Keeps v0.85.5 UX changes: Session Progress, 27B local recommendation, no proactive low-config local-model prompt, and hidden-reasoning fallback remain in place.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.6.tgz"
Lynn v0.85.5 · 2026-06-27 · Session Progress rail + local model recommendation chain
v0.85.5 UX and release update:
- Turns the right rail into Session Progress: it now prioritizes the current session, items needing attention, recent sessions, and a lightweight preview. Historical session cards have an explicit Open button, and the current session can focus input directly.
- Removes internal jargon and empty panels: "map/materials/patrol/in progress/closed" copy is simplified to "progress/files/sync/active/done/needs attention"; empty related-session space falls back to recent sessions.
- Confirms the edge model ladder: Lynn now recommends Qwen3.6-27B DSV4Pro GLM52-SFT-GPT55-RL-Coding LynnStyle Dense by default: Q5 for 32GB, Q4 for 24GB, Q3 for 16GB, and Q2 as an 8GB experimental tier. 9B / 4B stay explicit low-config downgrades, while 35B-A3B remains a legacy option. Low-config machines do not get a proactive 27B install prompt.
- Makes local startup more direct: the chat input local-model prompt can prepare and start the 27B path directly instead of sending users through Settings first.
- Guards against hidden-reasoning short answers: when hidden reasoning consumes the turn but the visible answer is only a tiny fragment, Lynn adds a visible fallback and triggers auto-review.
- Keeps the v0.85.4 retry-answer fix: retrying an assistant answer no longer pollutes later fresh prompts with stale replacement targets.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.5.tgz"
Lynn v0.85.4 · 2026-06-25 · retry-answer pollution fix + regression gate
v0.85.4 hotfix:
- Fixes retry-answer state pollution: after clicking retry on an assistant answer, Lynn rolls back from the matching previous user message and resends through the normal prompt path. A later new question no longer reuses the old prompt, old
replaceFromMessageId, or old branch target. - Failed sends stay out of the transcript: retry / edit-resend failures restore the draft only, without optimistically adding a stale assistant turn that can poison the next request.
- Adds an exact regression test: the store test now covers retry followed by a fresh question and asserts the second WebSocket payload is the new prompt with no stale replacement parameters.
- Keeps the v0.85.3 quality fixes: sports direct evidence closure, local data-analysis direct answers, safer evidence fallback, Windows workspace fixes, Session Runtime split, and mirror update feed remain included.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.4.tgz"
Lynn v0.85.3 · 2026-06-25 · ReAct evidence-quality fixes + Session Runtime split
v0.85.3 hotfix and quality fixes:
- GUI / CLI sports evidence closure: when
sports_scorereturns direct ESPN evidence, Lynn now closes on that evidence instead of letting generic search, local task lists, or stale scores overwrite the answer. - Stronger ReAct discipline for first-seen questions: the default path decides whether tools are needed, observes usable tool evidence, then summarizes only from that evidence; failed tools no longer produce unrelated local-task or generic-search conclusions.
- Direct answers for small local data analysis: arithmetic / business-analysis prompts now answer directly instead of falling into
step_executetimeouts. - Windows D-drive workspace fix: selecting a workspace outside the user home now persists
last_cwd,cwd_history, anddesk.trusted_rootsimmediately, so Desk files and new sessions no longer fall back to the old folder. - IJV6WH evidence fallback fix: file-read paths, LaTeX package/template fragments, and
\includegraphicssnippets are no longer treated as completed factual analysis. - Stale-task regression coverage: edit-resend, assistant retry, and failed-send paths are covered so a new question does not continue the previous task branch.
Stable core and work map:
- Stabilized v0.85 self-built core: Lynn keeps the no-fork, no-Pi-SDK main path and folds the latest empty-answer, evidence-integrity, GUI/CLI parity, and provider-reliability findings into release verification.
- Session Runtime split:
create-session.tsno longer carries the OpenAI/tool-continuation adapter and evidence fallback helpers inline; the public API stays stable while the runtime becomes easier to verify and repair. - Session Map workbench: the right sidebar now follows the current thread's work map, inspection state, evidence, and branch-from-here controls instead of acting as a loose note pile.
- Huge-session health markers: session inspection marks large, huge, blocked, and archived states so multi-GB histories become visible risk nodes instead of GUI-freezing entries.
- Simpler main UI: the GUI no longer surfaces the Fleet command deck or standalone notes; MCP setup lives in Settings. Parallel worker power remains in
Lynn worker run/Lynn agentsfor terminals, CI, and other agents. - GUI and CLI remain aligned: both packages verify against Brain V2, evidence-first routing, tool events, and visible final-answer closure.
- Brain ops fixes: repaired one corrupt device JSON behind
internal auth error, moved v2 healthcheck / cron-smoke to signed HMAC requests, and stopped old v1 smoke noise from probing an expired MiMo key.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.85.3.tgz"
Lynn v0.84.5 · 2026-06-14 · BYOK DeepSeek stability + realtime search and market fixes
Issue #74 and BYOK model closure:
- DeepSeek V4 Pro / V4 Flash verified in real multi-turn chats: provider ids are normalized, unreadable legacy API keys show an explicit re-entry prompt, and duplicate provider entries no longer route models to an empty-key provider.
- Thinking-model empty-turn poisoning fixed: hard-empty assistant turns now persist a visible fallback and are stripped before the next prompt, so one blank BYOK turn no longer breaks the whole thread.
- DeepSeek V4 context and output budget fixed: V4 Pro / V4 Flash keep 1M context while their output budget returns to a provider-safe cap.
- Provider settings cleanup: deleting deprecated or discovered models no longer makes them loop back into the add-model list; blank saves do not overwrite an existing key.
- Search, sports, and market tools hardened: BYOK tool search uses the Brain GLM/MiMo chain first and no longer treats Baidu/Bing search pages as evidence; World Cup schedules, NBA scores, gold prices, and US stocks such as NVDA use structured or parseable sources.
- Release gates: the local app package passed packaged server / CLI / settings smokes, plus real DeepSeek V4 Pro / Flash multi-turn verification.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.84.5.tgz"
Lynn v0.84.4 · 2026-06-13 · Agent local-file task hotfix + GUI/CLI tool-boundary gate
Default-model Agent workflow hotfix:
- GUI / CLI local-file task fix: default model turns now receive a real local workspace summary. Read-only requests such as "find the first local novel chapter", "read my desktop file", or "inspect this folder" no longer fail with a false no-filesystem-access refusal.
- Deterministic read-only fallback: simple local file searches can be answered from the local scan before a model guesses or refuses, so file secrets / chapter snippets return reliably.
- Tool-boundary fix: Brain-managed realtime tools and client-side local tools are filtered separately. Lynn no longer suppresses the entire GUI/CLI client-tool surface during Brain turns.
- Local Qwen bridge narrowed: utility and coding tasks no longer bypass the tool chain through the direct local-model bridge.
- Pseudo tool-call cleanup: fake
<tool_call>/<function=...>style text is stripped from server streaming and frontend rendering. - Agent task-matrix gate: a new release gate covers GUI + CLI local novel/file reads, routing, tool boundaries, pseudo-tool leakage, and live smoke tests.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.84.4.tgz"
Lynn v0.84.2 · 2026-06-12 · StepFun default route + realtime voice + GUI empty-answer recovery
GUI and CLI ship together:
- StepFun 3.7 Flash default route: normal GUI/CLI chat,
Lynn -p, and coding execution use StepFun 3.7 Flash by default. Experimental manager paths stay explicit. - Realtime voice primary path: GUI microphone and
/voice/lynn voiceinside the CLI chat use Brain-hosted StepFun Realtime for continuous conversation; the CLI renders status and a live waveform below the chat. ASR/TTS utility commands remain auxiliary. - GUI empty-answer recovery: stale device signatures are refreshed per request, and Brain no longer closes a tool turn after 8 seconds if the final assistant answer is still arriving.
- reasoning-only retry: Brain retries responses that contain reasoning but no visible answer at the source.
- honest tool-turn close: tool completion is rendered factually while waiting for the model's final answer; no silent close and no fake local summary.
- GUI token/cost pipeline: SDK usage now flows through WebSocket, store, and the input-row chip.
- Fleet discoverability and acceptance panel: desktop Fleet entry points and acceptance UI are easier to find and inspect.
- Issue #72/#74 data isolation and repair: Lynn no longer reads or migrates
~/.hanakoby default; import is opt-in viaLYNN_IMPORT_HANAKO_ON_FIRST_RUN=1. Existing polluted~/.lynninstalls repair retired MiMo/TokenPlan model references back to the Brain default route while preserving user API keys. - Safety and bug-fix rollup: device-signature refresh, honest tool-turn close, reasoning-only retry, Fleet acceptance UI, release gates, and doc-drift checks ship together.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.84.2.tgz"
CLI v0.80.6 · 2026-06-01 · prefix-cache visibility + long-run stability hotfix
CLI-only hotfix; the desktop app remains v0.80.1:
- Prefix-cache visibility: Reasonix-style stable prefix / resume history / volatile runtime / current user layers remain deterministic; usage, sessions, replay, and
Lynn cache doctor --jsonnow surfaceprefix-cache ... hitwithout adding a context-budget anxiety meter. - Runtime compaction during long tool loops:
Lynn code --longcompacts older turns while preserving the original goal, current plan, and recent tool results; JSONL emitscode.runtime.compacted, and the human TUI shows a lightweight info card. - Early Brain stream retry: if an SSE stream disconnects before any visible answer, reasoning, or tool call, the CLI retries with backoff; once output has started, it avoids retrying to prevent duplicate half-turn tool calls.
- Plan/tool card polish:
update_planand resume plan echoes use Claude-Code-like plan cards, while route/tool/compaction events stay on the same left-gutter card language. - Release gate covers compaction:
cli-longrun-smokenow forces large tool results and requires acode.runtime.compactedevent, so long-run stability is verified outside narrow unit tests.
npm install -g --force "https://download.merkyorlynn.com/downloads/cli/lynn-cli-0.84.4.tgz"
v0.80.1 · 2026-05-31 · CLI stability hotfix + remote Brain fallback
V0.80.1 stability hotfix:
- CLI works without the desktop app: when the local Brain is unavailable,
Lynnfalls back to the hosted Brain route so fresh installs can chat immediately. - No noisy build prompts: same-version build refreshes no longer interrupt users; only true version upgrades ask for confirmation.
- Decode speed meter: chat/code status bars show recent estimated decode TPS without adding context-budget anxiety.
- Packaged Fleet runtime: the desktop app bundles the same CLI runtime used by the mirror tarball, so GUI Worker Fleet can spawn real workers after packaging.
- Release surfaces updated: mirror install docs, GitHub release notes, README snippets, and CLI agent contract stay aligned.
v0.80.0 · 2026-05-30 · CLI Worker Fleet + StepFun/MiMo Brain Route
Lynn's programming-focused release:
- Lynn CLI / Lynn Code:new
@lynn/clipackage with Ink TUI, markdown/code rendering, real diff preview, multimodal input,Lynn code -p ... --json, andLynn agents. - GUI Worker Fleet:fan-out tasks to multiple CLI workers, inspect logs/diffs/tests/gates, and perform gated merges.
- Brain V2 route:StepFun 3.7 Flash (high reasoning + 32K reasoning/generation budget) → MiMo V2.5 Pro/Omni → Spark Qwen 3.6 35B A3B.
- Long-run stability:tool-result reinforcement, chain-tool hints, tool-storm guard, session checkpointing, frame repair, git snapshots, and stable context layers.
- Local 9B opt-in:Qwen3.5-9B MTP no longer auto-starts on app launch; users explicitly enable it when they want local inference.
- Release gates:CLI install docs, mirror tarball, packaged CLI runtime, and headless agent contract are part of the release checks.
v0.79.9 · 2026-05-29 · Risk Boundary Split + Search Source UI
Final V0.79 stability release:
- 🧩 Five risk-heavy centers split:
InputArea,stock-market,mcp-client,bridge-manager, andengine/agentnow have clearer module boundaries, reducing future conflict and regression risk. - 🔎 Safer, inspectable search:web search prefers the brain v2 localhost proxy first, keeping paid search keys server-side; chat tool cards can expand synthesized answers and search sources.
- 🧭 Local model upgrade window:Qwen3.5-9B Q4_K_M imatrix MTP remains the default local onboarding model. Older 9B GGUF files now show as upgrade candidates, and 9B/35B download entries point to the ModelScope MTP repositories with MTP + thinking-on kept as default.
- 🛡️ Runtime regression coverage tightened:composer replacement, local Qwen status, stock-market, MCP transport, bridge streaming/attachment, session events, engine tool runtime, agent dynamic prompt, web-search, and search source UI all gained or updated focused tests.
- ✅ Release gate:V0.79.9 passed typecheck, runtime typecheck, full vitest, release static/live regressions, UI smoke, macOS signing/notarization/stapling/Gatekeeper validation, and Windows installer signing.
v0.79.8 · 2026-05-28 · Chat Runtime Split + CosyVoice Streaming
Stability and maintenance-cost release:
- 🧩 Chat runtime split:
server/routes/chat.tsis now under 500 lines, with request normalization, hub event forwarding, prompt turn running, WebSocket control, tool finalization, and local model bridging split intoserver/chat/*. - 🔊 True streaming CosyVoice TTS:Spark
lynn-tts.servicepins the GPU startup path, while the chat speaker prefers reader + PCM streaming playback and falls back to the file-based path when needed. - 🧪 TTS inspection hardened:
brain-tools-inspectionnow checks CosyVoice through both health and a real lightweight synthesis probe, and MiMo TTS uses the token-plan endpoint with both auth headers. - 🧭 Local model upgrade window:Qwen3.5-9B Q4_K_M imatrix MTP remains the default local onboarding model; older 9B GGUF files now show as upgrade candidates instead of default-ready models. The 9B/35B download entries point to the ModelScope MTP repositories, and startup keeps MTP + thinking-on by default.
- ✅ Release gate:the V0.79.8 candidate passed
npm run release:gate:typecheck, runtime typecheck, full vitest, server/main/renderer builds, static regression, and Electron UI smoke.
v0.79.7 · 2026-05-28 · LynnEngine TS + final central runtime cleanup
V0.79 final central TypeScript cleanup release:
- 🧱 LynnEngine facade is now TypeScript:
core/enginemoved from JS to TypeScript, bringing agent/session/config/model/plugin composition into runtime typecheck. - 🔁 Legacy import compatibility:existing
HanaEngineimports remain available as aLynnEnginealias, so plugins and older code do not need an immediate rename. - 🧰 Tool safety boundaries are typed:tool guards, tool aliases, on-demand MCP activation, sandbox options, and event dispatch now have typed wrappers.
- 🧭 Earlier central migrations remain gated:
server/routes/chat,core/session-coordinator, andcore/agentstay covered by the same release gate. - 🧭 Local model policy unchanged:Qwen3.5-9B Q4_K_M imatrix MTP remains the default local onboarding model; 4B remains a low-config downgrade with the thinking-on risk documented.
- ✅ Release gate:V0.79.7 passed
typecheck:runtime, fulltypecheck, fullnpm test, release static/UI/live regressions, and package/notarization gates.
v0.79.3 · 2026-05-25 · TypeScript safety migration + notarized package
V0.79 architecture hardening release:
- 🧱 TypeScript migration keeps moving:
server/chatleaf helpers, lightweightserver/routesmodules, and shared runtime utilities are now typed, reducing string typos and unguardedunknownvalues in hot paths. - 🔎 Release gate tightened:V0.79.3 passed full
npm test,typecheck,typecheck:runtime, server/main/renderer builds, and targeted regression tests after the merge. - 🧭 Local model policy unchanged:Qwen3.5-9B Q4_K_M imatrix MTP remains the default local onboarding model; 4B remains a low-config downgrade with the thinking-on risk documented.
- 🧾 Chat/artifact paths are easier to maintain:stream emitters, turn state, artifact recovery, tool summaries, and voice fallback helpers now have TS boundaries ahead of the larger
chat.jsand core split. - 🧪 Core migration deferred intentionally:
core/session-coordinator.js,core/engine.js, and similarly large files stay out of this package to keep the release stable. - 📦 macOS release artifacts are notarized:Apple Silicon and Intel DMGs are signed, notarized, stapled, and Gatekeeper-validated; Windows ships as a signed NSIS installer.
v0.79.2 · 2026-05-25 · Stability patch + TypeScript migration foundation
V0.79 stabilization patch:
- 🧭 Local onboarding stays on 9B by default:Qwen3.5-9B Q4_K_M imatrix MTP remains the default; 4B stays as a low-config downgrade with the thinking-on risk documented.
- 🌦️ Weather and realtime tools hardened:weather answers now follow the tool-returned absolute dates and precipitation wording instead of misreading relative day ranges.
- 🔁 Brain v2 fallback stabilized:Spark APEX-MTP fallback now uses the canonical model id, disables thinking by default for fallback, and has configurable cold-start health probe timeouts.
- 🧾 Deep Research artifact shape unified:local, BYOK, and default model paths all create clickable HTML preview cards in chat.
- 🧱 Architecture debt cleanup:
brain-v2-mirrorcontinues its TypeScript island hardening, whileserver/chatleaf helpers andcoreprovider/LLM contracts now have migration-safe type boundaries. - ✅ Release gate:full
npm testpassed,typecheck:runtimewas added, brain-v2tsc + 104 testspassed, and release preflight covers build/regression gates.
v0.79.1 · 2026-05-25 · Default local model stays on Qwen3.5-9B MTP, 4B as downgrade
Default local tier swap:
- 🧠 Default Qwen3.5-9B Q4_K_M imatrix MTP: 5.38 GB · 24GB VRAM/unified memory recommended · MTP acceleration · stable thinking-on first. Spark retests confirmed 4B can think for a long time and return no visible answer with thinking-on, so it is no longer the default onboarding model.
- 🎚️ Three-tier hardware ladder:
- Default (24GB VRAM/unified memory+): Qwen3.5-9B Q4_K_M imatrix MTP — stronger quality, MTP acceleration
- Low-config downgrade (8~16GB optional): Qwen3.5-4B Q4_K_M imatrix (Lynn) — thinking-off recommended; thinking-on may think for a long time and return no visible answer
- High-end (24GB VRAM/unified memory+): Qwen3.6-35B-A3B Q4_K_M imatrix — MMLU 90.40% / GPQA Diamond 80.70% · Lynn-calibrated · 21 GB
- 🔁 Smooth migration: old 4B default configs migrate back to 9B MTP; 4B remains an explicit low-config downgrade.
- 🧾 Deep Research HTML reports: local 9B, BYOK, and the default model now create a clickable HTML report inside chat; local/BYOK thinking models retry with no-think fallback when the first response has no visible answer.
- 🛡️ Architecture and safety refresh: the chat route is split into smaller service modules, local GGUF downloads validate source and file type, and model status/token copy now comes from provider state to avoid 4B/9B confusion.
- ✅ Test matrix: installed-app smoke passed for 9B MTP, GPT-5.4, and the default model; Deep Research HTML artifact gates passed for local/BYOK/default paths; the 4B thinking-on risk is documented in the model guide.
v0.79.0 · 2026-05-22 · Local 9B offline inference + local model manager
Local model release:
- 🧠 Local 9B MTP for daily offline use:Qwen3.5-9B Q4_K_M imatrix MTP is now the default one-click local model path. Lynn prepares llama.cpp, downloads and verifies the GGUF, starts a local OpenAI-compatible
/v1endpoint, and registers the provider after user authorization. - 📦 Local model manager:Settings → Models supports in-app 35B GGUF download, user-provided GGUF import, endpoint inspection, and stopping the local runtime to release memory.
- ⏳ Warmup feedback:the first local reply now explains the 30-60s weight-load/context-warmup window and shows staged progress instead of leaving users waiting.
- 🧭 Brain V2 migration:legacy Brain endpoints migrate to the V2 canonical endpoint; GLM Coding Plan uses the dedicated coding endpoint; empty-answer recovery remains a fallback, not a model-output override.
- ✅ Regression gate:full test suite
168 files / 1447 passed / 1 skipped,TypeScript, renderer build, local install, and GUI smoke passed.
v0.77.11 · 2026-05-09 · Deep Research desktop entry + quality gate + session persistence
Deep Research UX:
- 🧠 New
Deep Researchentry:the chat composer now exposes a dedicated research toggle for multi-model research with quality review. - 🧪 Quality floor:low-confidence winners, especially ambiguous abbreviations such as
A3B, are rejected instead of being shown as final answers. - 📌 Transparent footer:answers show the quality-review status, winner provider and candidate scores.
Persistence and packaging:
- 💾 Session persistence:
/api/deep-researchacceptssessionPath, so Deep Research user/assistant messages are appended to the local JSONL session and survive reloads. - 🧩 Explicit mode:Deep Research does not hijack normal chat; users opt in from the composer.
- 📊 Benchmarks archived:tool-abstain and Qwen3.5 vs Qwen3.6 experiment files live under
tests/benchmarks/for reproducibility.
v0.77.7 · 2026-05-05 · Performance optimizations + dangerous-command detection hardening
Performance (brain v2 side, all users benefit immediately):
- 🚀 MiMo fast-mode passthrough: Lynn ThinkingLevelButton 'off' → Pi SDK
reasoning_effort: off→ brain v2 translates to MiMothinking:{type:"disabled"}. Simple chat TTF-Content -51% (2.7s → 1.3s), first-byte latency nearly halved. - 🌐 HTTP/2 enabled: nginx
api.merkyorlynn.comupgraded with ALPN h2; SSE over H/2 cuts head-of-line blocking, TTFB ~50-100ms improvement. - 🔌 undici Pool keep-alive: brain v2 upstream 16 connections + 30s keep-alive; evening peak 3-concurrent -23% (12.7s → 9.7s), resolves cold-connection stalls.
- 📊 e2e smoke before/after: HMAC valid -41% / stock_market -54% / web_fetch -38% / exchange_rate -33% / calendar -33% / multi-scenario -23~54%.
Safety hardening (client):
- 🛡️ Dangerous-command detection regex fix:
commandLooksLike{Delete,MoveOrCopy,Create,LocalMutation}previously missed/bin/rm,./rm,exec rmetc. absolute-path forms — confirmation card high-risk markers were absent. Fix:- leading set adds
/(catches/bin/rmetc.) - trailing lookahead enforces strict boundary (prevents
rmdir-nopefilename false positives) - 51 new parameterized tests (
tests/command-looks-like.test.js) covering 17+11+10+4 positives + 6+3 negatives
- leading set adds
Brain provider reasoning passthrough:
- 🧠
engine.jsmarks brain models defaultreasoning: trueso Pi SDK's standardreasoning_effortfield flows through to brain v2 (no extra client change needed).
Monitoring updates:
- 📊 Feishu health-check adds MiMo as primary + local GPU route rename + Kimi K2.6 (kimi-for-coding API) replaces K2.5 + brain v2 /api/v2 health probe.
v0.77.6 · 2026-05-05 · Brain v2 backend rewrite (transparent to users)
Backend rewrite — invisible to users:
- 🧠 Brain v2 deployed: 11k-line v1 monolith replaced by 5-module v2 (< 2000 LoC production), OpenAI-compatible, full Lynn client protocol preserved.
- 🚀 MiMo
enable_search:trueas primary: simple chat 2-5s, tool calls 5-10s, multi-turn web_search 7-10s. - 🛠️ 16 server tools fully ported: web_search / web_fetch / weather / exchange_rate / express_tracking / sports_score / calendar / unit_convert / create_artifact / create_pdf / stock_market / live_news / stock_research / create_report / create_pptx / parallel_research — all e2e verified.
- 🔧 Fixed a v1 hidden bug along the way:
create_pptxwas actually erroring in v1 due to deprecated pptxgenjs 4.0.1 fill API, v2 uses modern{color}. - 🎯 Zero client changes for fallback paths:
<lynn_tool_progress>markers + reasoning_content stream + tool_calls SSE fields are byte-identical to v1. - 🔐 HMAC sign verify reuses v1 device store: legacy clients unaffected, new clients use new endpoint.
- 📊 Monitoring online: pulse every 5min (/health + ping chat) + smoke every 2h (4 core scenarios), Feishu alerts on failure.
- 🔄 Natural rollout: v0.77.6 routes to brain v2 (
/api/v2/), v0.77.5 and earlier keep v1 (/api/), dual-stack for 30 days then v1 sunset.
Quality gate (all green):
- 90 vitest unit tests + 16 e2e smoke scenarios
- Server-side TypeScript / Lint / Build all pass
v0.77.5 · 2026-05-02 · stoppable speech + WeChat bridge stability + voice latency
Speech & voice:
- 🛑 Speech can be stopped anytime: the chat "Read aloud" button is now a toggle — press again during a long playback to stop instantly. Switching messages or unmounting also stops audio.
- ⚡ Voice first-token latency: trimmed brain text_delta → TTS first-segment path; quicker first audio.
- 🧯 Voice append race fix: fixed "full text arrived but only the first audio segment played" (B2 race); server now adds a 150ms grace period plus a pendingAppendQueue double buffer.
Bridge stability:
- 🤖 WeChat/Feishu weather queries no longer "empty answer": long conversation history caused A3B output to be over-stripped by the pseudo-tool detector and fall back to the empty-turn copy. The bridge now keeps the raw text when sanitize empties it, so users always see a reply.
Regression:
- Unit / Integration / Voice runtime / TypeScript / Lint / Renderer / Main / Server build all pass
Hotpatch #1 (2026-05-02) — Windows install ERR_DLOPEN_FAILED
- ⚠️ Windows package re-published: the initial Setup.exe shipped Mach-O
clipboard.darwin-*.nodefiles inside the win-x64 server bundle. Windows Node tried to dlopen the macOS dylib at startup and crashed withERR_DLOPEN_FAILED. - 🔧 Fixed
scripts/build-server.mjsto sweep@mariozechner/clipboard-*for non-target platforms during Windows builds (mirrors the existing koffi platform-sweep block). - ✅ Windows Setup.exe re-signed; GitHub Release & Tencent mirror updated.
latest.ymlsize/sha512 refreshed. - ✅ macOS dmgs are unaffected (only ever shipped darwin variants).
Hotpatch #2 (2026-05-04) — Windows install ERR_DLOPEN_FAILED (continued)
- ⚠️ Hotpatch #1 was incomplete: it cleaned
clipboard-darwin-*from the server bundle, but desktop'sdesktop/native-modules/aec/lynn-aec-napi.darwin-arm64.node(V0.79 Phase 2 AEC native module, only prebuilt for Mac arm64) was still bundled into Win Setup.exe via electron-builder'sfilesglob*.node. Win Node attempted to dlopen the Mach-O dylib at startup and crashed. - 🔧 Added a native-modules platform-sweep pass to
scripts/fix-modules.cjsafterPack hook: scansapp.asar.unpacked/desktop/native-modules/**and removes any napi-rs-pattern.node(*.{darwin|win32|linux}-*.node) that doesn't match the current build target. - ✅ Win Setup.exe size 204.5MB → 204.4MB (removed 132KB darwin-arm64.node); GitHub Release & Tencent mirror updated.
latest.ymlsize/sha512 refreshed. - ✅ macOS dmgs are unaffected (still ship darwin-arm64 prebuild).
Hotpatch #4 (2026-05-04) — Intel Mac startup ERR_DLOPEN_FAILED (better-sqlite3 ABI mismatch from cross-build)
- ⚠️ Scenario: After Hotpatch #3 shipped, Intel Mac users hit immediate crash —
better_sqlite3.node was compiled against NODE_MODULE_VERSION 115. This version requires NODE_MODULE_VERSION 127(ABI mismatch) - 🔧 Root cause:
scripts/build-server.mjscross-build (arm64 host → x64 target) used the host Node to run npm install.prebuild-installdownloaded the better-sqlite3 prebuilt for the host's Node v20 (ABI 115) and dropped it intodist-server/mac-x64/— but that bundle ships its own Node v22 binary (ABI 127). At runtime, Node v22 dlopens an ABI-115 .node → instant crash. Apple Silicon was unaffected (host and target both v22). Hotpatch #1's sweep only checkedfileoutput (Mach-O arch), not the embedded NODE_MODULE_VERSION, so it slipped past. - ✅ Fix: cross-build env now explicitly sets
npm_config_target=22.16.0+npm_config_runtime=node+npm_config_disturl=https://nodejs.org/dist, forcing prebuild-install to download the v22-ABI-127 prebuilt for the target. - ✅ Verification: actual dlopen +
new Database(':memory:')instantiation test using eachdist-server/{platform}/nodebinary — both mac arm64 and mac Intel now FULL OK. Windows Setup.exe shared the same root cause (arm64 cross-build → win32 x64) and was rebuilt the same way. - ✅ All three artifacts (Mac arm64 / Mac Intel / Win x64) rebuilt, re-signed, re-notarized, and re-mirrored.
Hotpatch #3 (2026-05-04) — "Confirm delete" no-op old bug + brain lip-service defense + route metadata leak fix
- ⚠️ Scenario 1: user typed "delete the zip files in Downloads" → brain returned empty → Lynn fallback promised "reply 'confirm delete' to trigger execution" → user replied "confirm delete" → empty again (the old bug — files were never actually deleted). Even after re-injecting context, brain (Qwen3.6-A3B) may still "say 'understood, executing now' without calling bash" or emit a placeholder
bash {"command": "command"}literal. - ⚠️ Scenario 2: user sent a research-style long task ("research and analyse Chinese executive coaching circles — pricing, headcount, key features") → brain returned empty → Lynn's fallback ended with "Kind: utility" route-metadata leak (user-confirmed screenshot) — brain echoed the internal retry prompt's
任务类型: utilityline as user-visible text. - 🔧 Root cause 1: the fallback text lied — Lynn had no mechanism to persist the prior turn's delete target to the session, so the 4-character "confirm delete" prompt entered brain as a standalone request with zero target info. Plus brain's tool-routing preference is flaky (V8 CODE-02 documented) — even with a strong prompt the model can still pick empty / lip-service / placeholder.
- 🔧 Root cause 2:
buildEmptyReplyRetryPromptembedded任务类型:${routeIntent}(intended as brain context), but a flaky brain echoed it back as "system narration" — same pollution pattern aspseudoToolSteered-path reflect-tag leaks. - ✅ Three-tier safety net (guarantees the user's "confirm delete" results in a real delete):
- Context persistence: user sends a delete-class prompt → immediately stash
originalPrompt + requirementtoss.pendingMutationContext(10-min TTL). Next turn matches a confirmation phrase ("confirm delete" / "confirm" / "yes" / "ok" / "go ahead" / etc.) → Lynn auto-rehydrates the prior prompt and re-injects the strict-execution retry prompt (buildLocalMutationContinuationRetryPrompt— strict execution requirements + known directory aliases + delete safety preamble). - Lip-service escalation retry (Path A): if after rehydrate brain still empty / lip-service /
model_tool_error/ emits placeholder → Lynn intercepts the turn close and schedules one internal retry with a "CRITICAL ESCALATION" prompt (buildPostRehydrateEscalationPrompt— explicitly forbids placeholder strings, pseudo-tool markup, and lip-service phrasing). - Deterministic fallback (Path B): if escalation retry still doesn't produce a real delete → Lynn server-side synthesizes a
find ${aliasPath} -name '*.${ext}' -deletecommand directly, bypassing brain. Routes throughexecuteRecoveredBashCommandand the confirmation card so the user gets a final approval before any rm runs. - Auto-clear on real delete: when
rm/trash/find -deleteis detected inlastSuccessfulTools,pendingMutationContextis cleared to prevent pollution of the next turn. - Route-metadata leak — two-layer fix: (a)
buildEmptyReplyRetryPromptno longer embeds任务类型:${routeIntent}; instead, it tells brain "do not echo system / routing labels (任务类型 / 类型 / Route / Kind)"; (b) addedstripRouteMetadataLeaksand applied it to the persisted-assistant-text replay path (extractLatestAssistantVisibleTextAfter), so even leftover residue in old session history is stripped before being shown to the user.
- Context persistence: user sends a delete-class prompt → immediately stash
- ✅ E2E dev verified across multiple runs (with brain in actively flaky state):
PENDING-DELETE-REQUEST v1100% fires,MUTATION-CONFIRM-REHYDRATE v1100% fires,POST-REHYDRATE-ESCALATE v1fires when brain lip-services after rehydrate. Path BPOST-REHYDRATE-DETERMINISTIC v1correctly synthesizesfind ... -deletefor Downloads/Desktop/Documents alias scenarios. - ✅ +17 unit tests covering storage / consume / confirmation phrases / TTL / unrelated input / auto-clear on real delete /
find -deleterecognition / escalation-prompt forbidden phrasing / route-metadata strip / retry prompt no longer embedsrouteIntent
v0.77.4 · 2026-05-01 · compact voice waveform + interrupt fixes + tool stability
Voice, tools, and report UX:
- 🎛️ Compact voice overlay: the voice runtime now uses a small waveform card instead of a large transcript panel that can cover the input area.
- 🧯 Interrupt handling fixes: fixed THINKING/SPEAKING interrupt crashes, stale turns blocking new recording, and lingering "understanding..." placeholders after ASR failure.
- 🎙️ ASR compatibility: Qwen3-ASR now normalizes language names, infers WAV MIME type, and applies request timeouts.
- 🧰 Local toolchain hardening: more guardrails for pseudo tools, malformed bash, file-operation feedback, and dangerous-operation authorization.
- 🌦️ Realtime evidence checks: weather/market answers require actual evidence fields instead of homepage/navigation snippets.
- 🌐 Translation and report artifacts: chat translation, sanitized HTML artifacts, and PNG export are tightened.
v0.77.3 · 2026-05-01 · Lynn voice runtime + startup white-screen fix + long-reply speech
Voice and startup stability:
- 🎙️ Lynn voice overlay: the new voice entry now presents itself as Lynn instead of Jarvis.
- 💬 Normal chat pipeline integration: voice transcripts enter the current chat, so tools, memory, history, and reflection follow the same path as typed messages.
- 🗣️ Default Chinese female voice restored: spoken replies use the CosyVoice default female voice, with 22.05kHz WAV normalized to 16kHz PCM playback.
- 🔢 Chinese number speech fix: dates, temperatures, percentages, and stock codes are normalized before TTS so mixed English number readings do not leak into Chinese speech.
- 📚 Sustained long-reply playback: long answers are cleaned, split into small sentence/comma chunks, queued, and retried as smaller chunks when a segment fails.
- 🪟 Startup white-screen fixes: fixed the React selector update-depth loop and the splash screen path when
app-readyis missed. - 🧩 Packaging hardening: plugin standalone loading,
build:servernpm registry retry, and local cold-start verification are covered.
v0.77.2 · 2026-04-29 · weather evidence gate + HTML report styles + PNG export
Report and realtime data UX:
- 🌦️ Weather evidence gate: weather tools now require actual conditions, temperature, rain, or similar fields before a weather result is considered valid.
- 📰 HTML report styles:
create_reportsupportseditorial-paper,finance-dark,magazine, andclean-briefing, with deep reports defaulting to editorial-paper. - 🖼️ Artifact PNG export: HTML artifacts can be previewed, opened in browser, and exported as PNG.
- 🎨 frontend-design skill: ships the Apache 2.0 frontend-design skill to improve generated HTML report quality.
- 🧯 Turn quality gate hardening: background, empty-answer, and fallback paths now recover more reliably.
- 🧼 Streaming pseudo-tool cleanup: unified cleanup of fake
<web_search>/<weather>/<bash>tags. - 🧩 Runtime stability patches: stream LRU, async EventBus errors, ChannelRouter locks, and plugin unload cleanup are hardened.
v0.77.1 · 2026-04-29 · guarded operations + pseudo-tool fallback + local task feedback
Execution and safety UX:
- 🛡️ Dangerous-operation authorization cards: delete, sudo, bulk move, overwrite, and similar high-risk commands now require confirmation in execute mode.
- 🎨 Beige Lynn-style authorization UI: the confirmation card now fits the app instead of using the old dark Codex look.
- 🧰 Local task feedback hardening: file organization, deletion, and move tasks must surface a visible final result after commands run.
- 🧼 Pseudo-tool leak guard: fake
<web_search>/<bash>style text is detected and recovered instead of being shown to users. - 🔁 Empty-answer and retry fallback: failed tools, preparatory lead-ins, and no-content retries now end with recoverable feedback.
- 📁 File task recognition improvements: better aliases for Desktop/Downloads and safer handling of zip/excel/pdf cleanup tasks.
- 🧪 Release Regression Gate: continues covering tool calls, file operations, pseudo-tool leaks, thinking leaks, and UI smoke.
v0.76.9 · 2026-04-28 · DeepSeek v4 + route reshape + brain tool fallback + UI stream fix
Hotpatch #1 (2026-04-28 PM):
- 🛡️ TOOL-FAILED-FALLBACK v1: when a tool call fails AND the model only emitted a preparatory lead-in ("let me check…") before turn_end (typical: live_news / stock_market failure), automatically inject a system prompt that forces the model to retry without calling tools — give a cautious answer clearly labeled "general knowledge / not verified live", or honestly tell the user the data couldn't be retrieved. Fixes the "Lynn only answers half a sentence then stops" dogfood bug.
- 🧪 +262 lines of tests (
tests/chat-route-events.test.js) covering TOOL-FAILED-FALLBACK trigger conditions, retry path, and locale.
Model / routing ABD reshape:
- 🚀 DeepSeek API upgrade:
deepseek-chat→deepseek-v4-flash(non-thinking),deepseek-reasoner→deepseek-v4-flash(thinking mode withthinking:{type:"enabled",reasoning_effort:"high"}), newdeepseek-v4-proprovider for routing. - 🧠 Explicit
thinkingfield: v4-flash defaults to thinking mode and burns tokens; brain injectsthinking:{type:"disabled"}in chat chain andenabled+highin reasoner chain — no more emptyfinish=length. - 🛣️ chatOrder reshape: Spark FP8 first (light tasks local-first) → local GPU wrapper → DeepSeek V4-flash → GLM/MiniMax/Step → K2.6 second-to-last → K2.5 last.
- 📚 New creativeOrder (novel/chapter/poetry/literary translation/style rewrite) → DeepSeek V4-pro first + K2.6 second + GLM-5-Turbo.
- 📜 complexLongOrder K2.6 first (200K+ context only K2.6 supports) → V4-pro → V4-flash → fallback chain.
- 📦 Client BYOK compat:
lib/known-models.json+lib/default-models.jsonadd v4-flash/v4-pro, old names markeddeprecated:true + alias.
Brain tool chain & timeout fallback:
- 🛠 stock_research NaN sanitize: Tushare occasionally returns illegal JSON
:NaN/:Infinity; auto-replace with:nullbefore parse — no more 90s LLM fallback chain triggered by tool crash. - ⏱ web_search 25s total budget: multi-source race (DDG+Zhipu) + WeChat+SearXNG fallback total capped at 25s; on timeout returns empty so model answers from context.
- 🚫 HK bail v2 strict A-share whitelist: tsCode must match
60/00/30/68/8X/92.SH/SZ/BJ; rest (89xxxx fund / 4-digit HK / US tickers) bail to stock_market — fixes "HK 700 → 890001 pseudo-report" bug. - 📊 dataChunks guard: deep research context aborts the report-template flow if zero real data chunks were fetched; tells the model to fall back instead of misleading the user.
- 🌐 realtime-info multi-source enhancement: gold / oil / market quote sources expanded with clearer failure messages.
UI / client stream fixes:
- 🔤 </user> chat-template tag no longer leaks to UI: when streaming chunk boundary cuts
</user>into</us+er>, buffer the partial close tag to next chunk so ORPHAN_CLOSE_TAG_RE catches it correctly. - 🛎 Slow-tool progress hint: tools running >15s auto-emit
tool_progress slow_warningevent so UI doesn't feel frozen. - 🧰 Bash schema 3-layer fallback:
extractToolDetail+TOOL_ARG_SUMMARY_KEYS+normalizeToolArgsForSummaryall acceptcmd/shell/scriptaliases; Spark emitting{cmd:"..."}no longer renders as empty "Ran command". - 🎤 Recording permission ghost detection: ≥0.4s + blob<1KB recognized as macOS TCC ghost permission; UI tells user to re-authorize Lynn in System Settings + restart app.
- 🔏 install:local no longer drops permissions: sign-local.cjs defaults to Developer ID instead of ad-hoc, cdhash consistent with electron-builder so macOS TCC no longer treats Lynn.app as a "new app".
- 🎙️ PressToTalk UI polish: button styles + state machine refactor; press-and-lock + recording feedback more stable.
- 🧱 brain report-research-context boost:
server/chat/report-research-context.jsinjects more structured data so the model's report generation is more accurate.
v0.76.8 · 2026-04-27 · BYOK-equality + Spark FP8 rollback + file management fix + bash schema fallback + recording permission UX
Hotpatch #3 (2026-04-28 early morning):
🛠️ Bash tool schema consistency:
extractToolDetail/TOOL_ARG_SUMMARY_KEYS/normalizeToolArgsForSummaryall acceptcmd/shell/scriptaliases; Spark emitting{cmd:"..."}no longer renders as empty "执行 命令".🎤 Recording permission friendly hint: when user records ≥0.4s but blob<1KB, recognized as macOS microphone TCC ghost permission; UI tells user to re-authorize Lynn in System Settings + restart app.
🔏 install:local no longer drops permissions:
sign-local.cjsdefaults to Developer ID instead of ad-hoc, keeping cdhash consistent with electron-builder so macOS TCC no longer treats Lynn.app as a "new app" requiring re-authorization on every reinstall.📝 Brain long-answer stability (server-side):
max_tokenssimple 1500→4000 / longForm 6000→8000;__longFormRxmatches Chinese long-answer keywords (介绍/说说/讲讲/写一段/简介/教程...);temperature0.6→0.4 for consistent re-asks.🚨 Emergency Spark rollback PRISM-NVFP4 → Qwen3.6-35B-A3B-FP8 + SGLang+MTP: the heretic safety-removal pipeline broke tool-call decisiveness; curl-verified reasoning deadloop at 2048 tokens with no tool_call emitted. FP8 + "首先" injection + NEXTN MTP restored immediately.
🧠 BYOK-equality refactor: Lynn client no longer uses "scenario contracts + prefetch + force tools" to override routing — brain now follows the same autonomous-judgment path as BYOK (GPT/Claude/Kimi direct).
🔧 File management classification fix: verbs like "create / move / organize" + folder/directory/image objects always route to UTILITY/local_automation, no longer misclassified as vision/multimedia by the bare "image" keyword.
🛡️ 6 brain server patches: HYBRID-1 (hasGpuTools→max=32K) / HYBRID-3 (reasoning guardrail) / B1 (
__needsFileTools) / B2 (tightened__isFileEditIntent) / LYNN BYOK-equality / loop-breaker v4 (log-only, no enforcement — allows legitimate multi-step ls→mkdir→mv).🤖 New LLM Triage v1: regex + Spark FP8 hybrid classifier with 5min cache, auto fallback to regex when Spark unreachable.
🛠️ Bash args normalization: tool-wrapper auto-coerces query/cmd/shell/script into
command, recovering from Spark's occasional schema slip.🎤 Recording min-size guard: PressToTalkButton rejects <1KB blob or <0.4s duration to prevent sensevoice 500 EBML header errors.
⌨️ IME triple-OR:
isComposing || nativeEvent.isComposing || keyCode === 229— the last Chinese segment no longer drops on Enter submit.🔇 Empty-answer fallback: when the model only thinks but never produces text → retry button shown (5 locales added).
🔠 i18n: Settings page Voice tab now displays "语音" (5 locales were missing the translation).
🚫 Pseudo tool-call detection & recovery: when the model writes
<web_search>.../web_search(query=...)as plain text instead of a real tool_call, brain auto-steers back to the real tool flow and the user never sees the broken text.🧪 771/771 tests + 30 new regression cases locking in "file-move-image never again misroutes to vision".
v0.76.7 · 2026-04-27 · TTS end-to-end + Voice Phase 1 + CSP media-src fix
- 🗣️ TTS playback wired up: SenseVoice ASR + CosyVoice 1.0 SFT (7 built-in speakers), beige 🎤 button → ssh tunnel → frp → DGX docker
- 🎙️ B-mode press-and-lock: hold 600ms to lock continuous recording, tap again to stop
- 🔌 Provider Registry framework: Alibaba stack as default + 4 BYOK fallbacks (Faster Whisper / OpenAI Whisper / Azure / Edge TTS)
- 🔧 CSP media-src fix: vite CSP_PROFILES now allows
blob:URLs to be loaded by Audio elements (the actual blocker for this release) - 🛠️ vite hono external: server Vite config fix so plugin dynamic imports resolve correctly
- 🪟 IME stability: Chinese input candidate switching no longer jitters; thinking blocks collapsed by default
- 📦 3-platform notarization: macOS Apple Silicon + Intel + Windows all notarized, mirror site synced
v0.76.6 · 2026-04-21 · Tools enhancement + research path + OAuth + 715 tests green
- 📈 stock-market tool overhaul (+425 lines): multi-source quotes + fault tolerance + 4 new tests
- 🧠 Research context expansion (+428 lines): structured weather/stock data injection, fused research path
- 🔧 LLM client refactor (+188 lines): provider-aware request building, more stable across providers
- 💭 ThinkTag/XingParser expansion: thinking-chain parsing covers 5 more scenarios
- 🔐 OAuth path fix: Lynn OAuth provider id correctly maps to auth.json
- 🎯 Turn isolation TURN-FENCE v1: when previous turn aborts with no output, next turn auto-isolates to avoid reading residue
- 🧪 Tests: 4 new + 7 expanded,
715/715 vitest all green
v0.76.5 · 2026-04-21 · Encoding cleanup + local office answers + vision arg fix
- Encoding cleanup: intermittent garbled characters in LLM output now intercepted
- Local office answers: simple office math handled locally to avoid LLM mental-arithmetic errors
- Vision argument regression fixed (9 tests)
- Tool intent narrowing: fewer false-positive tool triggers
v0.76.4 · 2026-04-20 · ThinkTagParser v2 + FAKE-PROGRESS-GUARD v2 + 25s TTFT timer
- ThinkTagParser v2: thinking-tag parsing rewritten to handle more model formats
- FAKE-PROGRESS-GUARD v2: blocks LLMs from fabricating tool_progress messages
- 25s TTFT timer: time-to-first-token timeout fallback for steadier UX
- vLLM back to real A3B (server-side): fixes prior version mistakenly using a dense model
- QA quality score: 1.3 → 4.42
v0.76.3 · 2026-04-19/20 · True streaming + Diff view + Brain concurrency 3×
- 20-hour marathon: true-streaming refactor, 10+ brain patches
- vLLM tuning: KV pool capacity 4×
- WritingDiffViewer: word-level red-strike / green-add, designed for writing
- Loop-breaker v2: detects tool-call infinite loops
- Review routing: cross-session task tracking
v0.76.2 · 2026-04-18 · Intel crash fix + tool aliases + Chinese thinking
- Fixed Intel Mac startup crash
- 6 tool-name aliases (read_file → read, etc.)
- Chinese thinking hit rate 91%
- ThinkingBlock R1-style rendering
v0.76.1 · 2026-04-17 · Task mode switching + on-demand MCP
- Task mode chips: ⚡ Auto / 📖 Fiction / 🖋️ Long-form / 🌶️ Social / ⌘ Code / 💼 Business / 🌐 Translate / 🔬 Research / 📝 Notes
- 7 social-mode slash commands (
/xhs/gzh/weibo/douyin/zhihu/hashtags/titles) - On-demand MCP servers: 0 MCP tools by default, enable per-need so the model isn't slowed down
- IME bug fix
- GPU 64K context support
👉 Full release history · Gitee release mirror
What is Lynn
Lynn is a personal AI agent for the desktop: it has memory, personality, writing tools, autonomous work loops, and now a path toward orchestrating coding work.
Early Lynn focused on bringing agent workflows out of the terminal so writers, researchers, operators, students, founders, and non-programmers could actually use them. V0.85.6 keeps that quieter GUI direction: chat, Session Progress, files, and acceptance stay on the desktop, while this release hardens local file reads and stale-task isolation; parallel workers remain available as headless CLI capabilities for terminals, CI, and other agents.
If you use Claude Code, Codex, or Cursor, Lynn should feel familiar but more like a workbench than a command deck. It turns the current thread, attention signals, evidence, files, automations, and branches into inspectable Session Progress. If you have never used those tools, you can still start from the GUI and gradually hand coding, documents, research, and automation work to Lynn.
Who Lynn is for
Good fit
- Writers and researchers who want long-term memory, writing diffs, and deep research.
- Operators, founders, and product teams that need recurring work, reports, cross-platform messaging, and local file tasks.
- Developers and technical leads who want GUI Session Progress for acceptance, plus headless CLI workers for parallel tasks.
- Teams that want code work and business work to share one review and acceptance surface.
- People who want a desktop AI workspace instead of another browser tab.
Not the best fit
- If you only want code completion, use Cursor / your IDE.
- If you only want a single terminal agent, Claude Code, Codex CLI, or Gemini CLI may be simpler.
- If you are building a multi-tenant hosted agent service, use a server-first framework.
Lynn does not replace Cursor. Cursor owns the editor loop. Lynn owns the layer around the loop: goals, evidence, files, automations, branch state, review gates, reports, and long-term memory across the whole process.
Lynn vs Cursor / Claude Code
| Lynn V0.85.6 | Cursor | Claude Code / Codex CLI | |
|---|---|---|---|
| Core shape | GUI Session Progress + headless CLI workers | IDE coding flow | Single CLI agent |
| Parallel work | CLI worker / worktree / JSONL protocol | Limited | Manually managed |
| Code acceptance | Session Progress + GUI diff + test gates | Inside IDE | Terminal output |
| Long-term memory | 6-layer persistent memory | Session-level | Session-level |
| Writing and research | Word-level diff + Deep Research | Weak | Weak |
| Built-in keyless route | Brain provider pool | Subscription/API required | Provider key required |
| Multi-agent/persona | Yuan templates + agent desks | No | No |
| Platform bridges | Feishu / Telegram / WeChat / QQ | No | No |
| License | Apache 2.0 | Closed commercial | Closed/commercial or mixed |
Not a Tool — A Companion
Lynn is not a generic "AI assistant". Each Agent has its own name, personality, and voice, shaped by personality templates (Yuan) — some are warm and gentle, others rational and precise. You can create multiple Agents, each running independently, delegating tasks to each other and collaborating via channel group chats. An Agent is just a folder — easy to back up and migrate.
Connect Telegram, Feishu, QQ, or WeChat bots and the same Agent can chat with you across platforms, even operating your computer remotely.
Gets Smarter the Longer You Use It
Lynn's memory is not a static memory.md. It's a six-layer system:
- Fact Store — Stable facts confirmed in conversation, automatically extracted and structured
- Deep Memory — Long-term memory compiled across sessions, periodically organized by AI
- Proactive Recall — Automatically retrieves relevant memories based on context, without waiting for you to mention them
- User Profile + Inferred Profile — Your preferences, habits, and frequently used tools, learned naturally over time
- Project Memory — Per-workspace context and conventions
- Skill Distiller — After a complex task succeeds, automatically evaluates whether it's worth distilling into a reusable skill for next time
Memory and skill distillation work together: the more you use Lynn, the more accurate its recall, the faster it works — gradually becoming a long-term collaborator that truly understands you.
Local models — hardware ladder
Hardware detection uses unified memory on Apple Silicon and the largest single NVIDIA GPU's VRAM reported by nvidia-smi on Windows/Linux. Host RAM and separate GPUs are never added to VRAM. Recommend Q2 at 16GB and Q3 at 24GB or above (at least 23.5GiB reported for the 24GB tier). Installation is blocked below 14GiB or when detection fails; manual selection cannot bypass this check. A 13GB device is insufficient. At 14 to under 16GiB, Q2 only meets the minimum and has limited context headroom. Model files, KV cache, runtime buffers and the OS all require memory; total capacity does not guarantee enough memory is currently available.
Qwen3.8-27B Coder390 EfficientThink: Q3 is the default at 24GB and above (17.30 GB main model). Below 24GB (16GB tier) uses Q2 (13.28 GB). Both GGUF files include built-in Q4 MTP. This install does not download a separate DFlash2 draft or a vision component. Q3 starts at 8K context and Q2 at 4K, with one slot. KV cache, compute buffers and the operating system need additional memory. Installation and startup require explicit user action. Older downloaded files remain until the user deletes them.
| Tier | Model | Size | Recommended hardware | Context | Capability signal |
|---|---|---|---|---|---|
| 24GB and above | Qwen3.8-27B Coder390 EfficientThink Q3 | 17.30 GB | Default at 24GB and above | 8K | Built-in Q4 MTP; one slot |
| Below 24GB (16GB tier) | Qwen3.8-27B Coder390 EfficientThink Q2 | 13.28 GB | Below 24GB (16GB tier) | 4K | Built-in Q4 MTP; tighter memory budget |
| Legacy option | Qwen3.6-35B-A3B DSV4Pro Distill Q5_K_M imatrix MTP | 25.3 GB | 32GB VRAM/unified memory+ | 32K | Legacy 35B orchestrator path kept for existing users and comparison tests |
See the model card for model details. Model-file sizes are not runtime memory guarantees. Old model files are never silently deleted.
| Universal | Details |
|---|---|
| Runtime | llama.cpp local server, OpenAI-compatible /v1 endpoint |
| Privacy | Fully offline capable; no API key required; conversations stay on device |
| Default thinking | Automatic: light tasks disable thinking; complex tasks can enable it in the Lynn composer |
Downloads and mirrors
Recommended Qwen3.8-27B Coder390 EfficientThink:
- Model card and GGUF files
- Download
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-MTP.gguforGGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-MTP.gguf. Both include built-in Q4 MTP; no separate DFlash2 draft is downloaded. - Each GGUF file is checked against its pinned byte size and SHA-256; no vision component is included in this install.
Historical 9B / 4B / 35B models (not current recommended tiers): these links are for existing users or manual deployment. The current Settings page no longer offers 9B / 4B installation; legacy models do not bypass Coder390 capacity checks.
- 9B: Merkyor/Qwen3.5-9B-GGUF-imatrix-MTP / Hugging Face (
Qwen3.5-9B-Q4_K_M-imatrix-mtp.gguf, 5.38 GB) — low-config downgrade - 4B: Merkyor/Qwen3.5-4B-GGUF-imatrix (
Qwen3.5-4B-Q4_K_M-imatrix.gguf, 2.6 GB) — lower-config downgrade; thinking-off recommended - 35B legacy: Merkyor/Qwen3.6-35B-A3B-DSV4Pro-Thinking-Distill-GGUF / Hugging Face (
Qwen3.6-35B-A3B-DSV4Pro-Distill-MTP-Q5_K_M-imatrix.gguf, 25.3 GB) — legacy orchestrator path for existing users and comparison tests
In the app: Settings → Models → Local Qwen3.8-27B → Select a tier → Install and start. Qwen3.8-27B Coder390 EfficientThink uses Q3 at 24GB and above (17.30 GB) and Q2 below 24GB (16GB tier) (13.28 GB), with built-in Q4 MTP. Q3 starts at 8K context and Q2 at 4K, with one slot. Use Let Lynn help me deploy to bring a diagnostic draft into chat. Existing models and manual GGUF import remain available.
Install and Go
Two paths on first launch. Quick Start requires zero API keys — a built-in default model works out of the box. Enter your name, grant permissions, start chatting. Want a stronger model? Connect your own provider anytime in Settings.
Lynn uses the OpenAI-compatible protocol, supporting any compatible provider (OpenAI, DeepSeek, Qwen, SiliconFlow, local models via Ollama, etc.). Some providers also support OAuth login. A nine-tier automatic fallback mechanism ensures conversations continue even when a provider is temporarily unavailable.
Interface available in 5 languages: Chinese, English, Japanese, Korean, and Traditional Chinese.
Deep Optimization for Chinese Models
Lynn doesn't just slap an OpenAI-compatible wrapper and call it a day. From 9B small models to GLM-5 reasoning models, every tier has purpose-built adaptations:
Free built-in models (Brain v2) — Quick Start ships with a built-in model pool. V0.87.5 uses Step 5 Preview as the ordinary GUI/CLI default route, with explicitly enabled vendor fallbacks and an explicit local manager path:
T1 ⭐ Step 5 Preview (step-5-preview, text/coding route)
T2 DS-V4 Flash (vendor fallback for StepFun outage or specific high-risk work)
T3 Local manager (explicit `Lynn manager run` experimental path)
T4 Vision: native Step 5 Preview (image content retained; no separate vision key required)
T5 Zhipu GLM / Kimi / MiniMax (vendor backup lanes)
No API key needed — device authentication only. The normal text/coding lane is Step 5 Preview first; local manager and alternate providers are explicit or fallback paths.
Three-tier tool layering — Tools are automatically pruned based on context window:
- Small models (<32K, e.g. ERNIE 8K, Moonshot 8K, Step 8K): only
web_search+web_fetch, preventing tool descriptions from blowing out the context - Medium models (32K, e.g. Doubao 32K, Hunyuan Pro, Baichuan Turbo): standard tool set (search, memory, file preview, notification — 10 tools)
- Large models (≥64K, e.g. GLM-5, Qwen3-Max, DeepSeek): full tool set, no pruning
Small-model prompt engineering — When context < 32K, four optimization directives are auto-injected: 500-word reply limit + key conclusion markers (<!-- KEY: -->, prioritized during compaction); sequential single-tool call rules (prevents weak models from calling tools in parallel incorrectly); tool overview summary (reduces token overhead from tool descriptions); plans required before 3+ step tasks.
Adaptive context compaction — Small-window models retain more recent context (40% vs 20% for large models), reduce output reservation (4K vs 16K), and trigger automatic session relay after just 1–2 compactions (vs 3 for large models), preventing context quality collapse.
Reasoning model protocol adaptation — Zhipu GLM-5 / GLM-5-Turbo use ZAI thinking format (thinking: { type: "enabled" }), while the entire Qwen3 family uses the enable_thinking quirk — each routed through different Pi SDK patch paths. Non-OpenAI providers uniformly disable developer role to prevent API errors.
Coding Plan one-click setup — 7 domestic vendors' coding subscriptions are pre-registered as separate providers (just add your API key): DashScope Coding, Zhipu Coding, Kimi Coding, MiniMax Coding, StepFun Coding, Tencent Cloud Coding, Volcengine Coding.
Tool call fault tolerance — Small models are prone to malformed tool calls. After 3 consecutive failures, the system auto-degrades: stops tool use and explains the situation in text. Empty tools: [] arrays are stripped before sending (DashScope / Volcengine APIs return 400 on empty arrays).
Works While You're Away
This is the fundamental difference between Lynn and conversational AI tools.
Session Progress is the async collaboration space between you and your Agent. The right rail is no longer a loose note pile or an internal map; it tracks the current session, attention signals, recent sessions, evidence, and branch-from-here entry without dragging the whole long context back into the model.
Heartbeat periodically scans the workspace, conversation state, and Session Progress. When new tasks appear, they're automatically processed and you're notified when done.
Cron lets Agents run scheduled work. Each Agent's cron jobs run concurrently and independently — switching Agents doesn't interrupt other Agents' schedules. Recurring work can be generated from chat plans and Session Progress.
Long-task stability is the foundation of this autonomous work system. Lynn's server runs as a standalone Node.js process (independent of the Electron renderer), communicating via full-duplex WebSocket. Chat interruptions, window closures, and network hiccups won't break running tasks. A review system automatically verifies AI output quality, and the model auto-falls back to alternatives when issues are detected.
Security
Lynn can read files, run commands, and operate your local environment — so security is not an add-on, it's the foundation. Four layers of defense-in-depth ensure Agent behavior stays within your control:
Layer 1 · Path Guard
Four-tier access control: BLOCKED → READ_ONLY → READ_WRITE → FULL. Every file operation goes through realpath resolution (resolving symlinks) before matching access zones. Sensitive system files (SSH keys, .env, password databases, etc.) are hardcoded as BLOCKED — Agents can never touch them. Paths outside the working directory default to read-only.
Layer 2 · OS-Level Sandbox
Terminal commands are not executed directly — they go through operating system isolation:
- macOS:
sandbox-execwith dynamically generated Seatbelt SBPL profiles restricting filesystem, network, and IPC access - Linux: Bubblewrap (
bwrap) namespace isolation, mounting only policy-approved directories - Windows: PathGuard path extraction + validation as the security layer (no OS sandbox available)
Layer 3 · Prompt Injection Detection (ClawAegis)
File contents dragged in by users or read by Agents are scanned by a lightweight injection detector — pure regex, zero latency, no LLM calls. Covers directive overrides (ignore previous instructions), role hijacking (pretend you are), and sensitive operation inducement (read /etc/passwd). Detections append warning context without blocking reads.
Layer 4 · Behavioral Confirmation & Security Modes
Three security modes for users to choose from:
- Safe mode: Read-only, no file writes or command execution
- Plan mode: Read/write allowed, dangerous operations pause for confirmation
- Authorized mode: Full autonomy, Agent makes its own decisions
Dangerous operations (rm -rf, sudo, git push --force) always trigger a confirmation dialog regardless of mode. Skill installation undergoes independent AI safety review (detecting prompt injection, overly broad triggers, privilege escalation) — installation is blocked if review fails.
Harness Architecture
Six harness layers wrap Lynn's core Agent loop. Each layer operates independently without invading the Agent's internals, coordinating through shared data stores (FactStore / SQLite, experience/ directory, memory.md):
User Input
│
├─ [1] Content Filter ─── DFA keyword filter, 17 risk categories, input blocking/warning
├─ [2] Proactive Recall ─ Memory recall: keyword extraction → FactStore search → inject invisible context
│
▼
┌──────────────────┐
│ Core Agent Loop │ LLM conversation + tool calls
└──────────────────┘
│
├─ [3] Tool Wrapper ───── Path validation + command preflight + dangerous operation authorization (3-mode policy)
├─ [4] ClawAegis ──────── Prompt injection scan on read/read_file tool return content
│
├─ [5] Memory Ticker ──── Post-observation: rolling summary every 6 turns → daily deep memory → fact extraction → skill distillation
├─ [6] Review System ──── Post-evaluation: a second Agent reviews output → structured findings → auto-fix tasks
│
▼
User Output
Review and Memory converge: The Review System (Layer 6) uses a second Agent as a "colleague code reviewer" — findings automatically become fix tasks fed back into the execution pipeline. The Memory Ticker (Layer 5) extracts facts and experiences from conversations, depositing them into FactStore. Proactive Recall (Layer 2) retrieves this knowledge on the next conversation and injects it as context. Together they form a complete feedback loop: evaluate → deposit → recall → better execution → re-evaluate.
Each layer is designed around low latency, non-blocking: Content Filter uses a DFA Trie (not LLM); ClawAegis uses pure regex (scans the first 10KB without calling an LLM); Proactive Recall uses regex keyword extraction plus FactStore / SQLite retrieval and stays lightweight; Memory Ticker and Review both run asynchronously in the background without blocking the current conversation.
Tools
Read/write files, run terminal commands, browse the web, search the internet, take screenshots, draw on a canvas, execute JavaScript. Covers the vast majority of daily work scenarios.
Skills — Compatible with the community Skills ecosystem. Agents can also install skills from GitHub or write their own. Built-in safety review enabled by default.
Screenshots
Quick Start
Download
macOS (Apple Silicon / Intel): download the .dmg for your architecture from the download mirror; see the V0.87.5 release notes. Official DMGs must pass Developer ID signing, Apple notarization, stapling and Gatekeeper validation before publication.
Windows: download the latest .exe installer from the download mirror and run it directly; release records live on GitHub Releases.
Windows SmartScreen notice: The v0.86.8 release keeps the existing NSIS installation method and does not include a publicly trusted Authenticode code signature. Windows may show an unknown-publisher or SmartScreen prompt. Download only from the official channels above and verify the published SHA-256.
Linux builds are planned.
First Run
Two paths on first launch:
- Quick Start: Enter your name → set permissions → jump right in. A built-in default model works out of the box — no API key required.
- Local model: Settings → Models → Local Qwen3.8-27B. Qwen3.8-27B Coder390 EfficientThink uses Q3 at 24GB and above (17.30 GB) and Q2 below 24GB (16GB tier) (13.28 GB), with built-in Q4 MTP. Q3 starts at 8K and Q2 at 4K, one slot. Full model card.
- Advanced Setup: Enter your name → connect your own provider (API key + base URL) → choose a chat model and a utility model → pick a theme → set permissions → enter.
Lynn uses the OpenAI-compatible protocol, so any provider that supports it will work (OpenAI, DeepSeek, Qwen, local models via Ollama, SiliconFlow, etc.). Some providers (e.g. MiniMax) also support OAuth login. All model settings can be adjusted later in Settings.
Architecture
core/ Engine layer (LynnEngine Thin Facade + 8 Managers + 2 Coordinators)
lib/ Core libraries
├── memory/ Memory system (fact store, vector retrieval, deep memory, skill distillation)
├── tools/ Tool suite (browser, search, cron, delegate, skill install — 17 tools)
├── sandbox/ Two-layer sandbox (PathGuard + macOS Seatbelt / Linux Bubblewrap)
├── bridge/ Social platform adapters (Telegram, Feishu, QQ, WeChat)
├── desk/ Desk system (heartbeat patrol, cron scheduler, jian runtime)
└── ... LLM client, OAuth, channel storage, expert system, etc.
shared/ Cross-layer shared code (error bus, config schema, security mode, net utils)
server/ Hono HTTP + WebSocket server (24 routes, standalone Node.js process)
hub/ Background dispatch center
├── event-bus.js Unified event bus
├── scheduler.js Heartbeat + Cron scheduling
├── channel-router.js Channel triage + dispatch
├── agent-messenger.js Agent-to-agent messaging
├── dm-router.js DM routing
└── task-runtime.js Task runtime
desktop/ Electron app + React frontend
skills2set/ Built-in skill definitions
scripts/ Build tools (server bundler, launcher, signing)
tests/ Vitest test suite
Engine layer: LynnEngine is a Thin Facade holding AgentManager, SessionCoordinator, ConfigCoordinator, ModelManager, PreferencesManager, SkillManager, ChannelManager, BridgeSessionManager, ExpertManager, and PluginManager — exposing a unified API.
Hub: Runs independently of the active chat session. Handles heartbeat patrol, scheduled tasks (per-agent concurrent cron), channel routing, agent-to-agent communication (with hard round limits + cooldown to prevent infinite loops), and DM routing.
Server: Runs as a standalone Node.js process (spawned by Electron or independently), bundled via Vite with @vercel/nft for dependency tracing. Communicates with the frontend through full-duplex WebSocket.
Tech Stack
| Layer | Technology |
|---|---|
| Desktop | Electron 38 |
| Frontend | React 19 + Zustand 5 + CSS Modules |
| Build | Vite 7 |
| Server | Hono + @hono/node-server + @hono/node-ws |
| Agent Runtime | Pi SDK |
| Database | better-sqlite3 (WAL mode) |
| Testing | Vitest |
| i18n | 5 languages (zh / en / ja / ko / zh-TW) |
Platform Support
| Platform | Status |
|---|---|
| macOS (Apple Silicon) | Supported (V0.86.4 notarized DMG) |
| macOS (Intel) | Supported (V0.86.4 notarized DMG) |
| Windows | Beta |
| Linux | Planned |
| Mobile (PWA) | Planned |
Development
# Install dependencies
npm install
# Start with Electron (builds renderer first)
npm start
# Start with Vite HMR (run npm run dev:renderer first)
npm run start:vite
# Run tests
npm test
# Type check
npm run typecheck
License
This project is based on the open source work of liliMozi, modified and extended by Merkyor. See NOTICE.
Links
Explore related projects
affaan-m/ECC
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
300,289 starsNousResearch/hermes-agent
The agent that grows with you
262,109 starsmultica-ai/andrej-karpathy-skills
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
231,422 starsfirecrawl/firecrawl
Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥
200,178 stars