Repository navigation
Mightling v1.6.3
Mac desktop app (preview, unsigned)
Mightling-1.6.3-arm64-preview.dmg (Apple silicon) and Mightling-1.6.3-x64-preview.dmg (Intel) are a preview of the desktop app for macOS 12 or later, a client of a Mightling node on your network. They are signed ad hoc only, with no Apple Developer ID and no notarization, so macOS refuses to open the app the first time. Drag Mightling to Applications, try to open it once, then allow it in System Settings → Privacy & Security → Open Anyway (on macOS 14 and earlier, Control-click the app and choose Open instead). Or, in Terminal: xattr -dr com.apple.quarantine /Applications/Mightling.app. Check the dmg against SHA256SUMS first; steps in docs/desktop.md.
Compaction is faster, and it happens between your turns. When a session's context reaches the compaction limit, the agent summarises it and carries on from the summary. Until now every such summary cost far more than it should: Mightling's model server keeps the session's prompt in its cache, but the compaction request was built without the tool list, so its prompt differed from the cached one within the first few tokens and the server re-read the whole context (60–90K tokens, 50–75 s) before writing a word. The compaction request now carries the turn's tools, so it is served from the cache (a median 100% of the prompt cached in the measurement, against 0% before) and costs the summary alone. The summary is also bounded to about 800 words, so it does not run long.
With compaction that cheap, Mightling now compacts at the end of a turn: once an answer is on screen and the context has passed about 50,000 tokens (20% of the model's usable window), the session compacts while you read, instead of stopping in the middle of your next request. If you type during it, your message waits for the summary and then runs in the same turn (Enter), or starts the next turn after it (Tab, the queue key); nothing is lost. Measured on two scripted multi-turn coding sessions against a GB10 (12 sessions planned, 10 run): turn-end compactions took a median 53.5 s; the sessions compacted mid-turn 2.0–2.5 times each without it and never with it; every typed message was kept; and the sessions were 27–42% shorter in wall time. The report is docs/dev/turn-end-compaction/2026-10-14.md. ling exec (Night Shift, SWE-bench) never compacts at the end of a turn, since its process ends with the answer.
Switches, for anyone who wants the old behaviour: mightling_turn_end_compaction = false in the Dreamference config file (or DREAMFERENCE_MIGHTLING_TURN_END_COMPACTION=0) turns turn-end compaction off; DREAMFERENCE_MIGHTLING_COMPACT_SUMMARY_WORDS=0 removes the length bound (another number moves it); DREAMFERENCE_MIGHTLING_COMPACTION_TOOLS=0 sends the compaction request without tools as before.
Dropping old tool outputs instead of summarising: built, measured, off. A third variant drops old tool outputs (keeping the calls and a one-line placeholder) when that alone brings the context under the limit, and summarises only otherwise. It is in this release as a setting (mightling_drop_old_outputs, DREAMFERENCE_MIGHTLING_DROP_OLD_OUTPUTS=1) and off: in the same measurement it compacted less but left turns over the threshold with nothing on record, and one session ran into the two-hour limit. It stays available for the benchmark nights.
Code Mode's wait is gone where it could not work. When Code Mode's exec is offered in the form the SGLang server drops (DREAMFERENCE_MIGHTLING_EXEC_TOOL=freeform, the pre-1.6.1 behaviour), Codex still offered the companion wait tool, and the model's calls to it ended in "exec cell not found", each costing minutes of waiting on a test run that had to be relaunched. wait is now offered only with an exec that reaches the model.
Benchmark nights: every arm smoked first. The night script's start now runs one real task per arm before the overnight unit starts and refuses to start on a failure, after a night whose experimental arm failed every task in seconds on a setting the agent could not accept. A per-task limit (TASK_TIMEOUT) is a parameter of the script. The best-of-N chooser has a second version (scripts/swe_bench_chooser_v2.py) that writes reproduction tests from the issue, runs them in the task's container and consults the judge last; it is a script, not yet part of Night Shift.
Full Changelog: v1.6.1...v1.6.3