Skip to content

Mightling v1.6.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 08:37

Mac desktop app (preview, unsigned)

Mightling-1.6.1-arm64-preview.dmg (Apple silicon) and Mightling-1.6.1-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.

Search inside a long PDF. The agent can now search a PDF it has not indexed with pdf_search: a URL, or a PDF in the session's working directory or in one of your document collections. The PDF is read by the local file index's reader in its sandbox and indexed on its own (keywords and meaning, as docs_search does), and the best passages come back with their page numbers; the agent reads on with docs_read and cites the page. A long paper or manual no longer has to be read page by page through the web fetch. A URL is downloaded once (ling-fetch --download, PDFs only, within a size cap) and a second question uses the copy, kept until it has gone unused for a day. At /airgapped on a URL is refused and a local PDF is still searched. ling-docs extract <file.pdf> --page N prints a PDF's text from a shell. Linux, where the local file index is installed (a node installs it).

Code Mode now works on SGLang. Codex offers Code Mode's exec tool (a program that calls several tools in one turn) as a kind of tool the SGLang server drops without a word, so in 1.6.0 the model never saw it. ling now offers exec to SGLang and vLLM as an ordinary function and turns the model's call back into the call Codex expects; against ling-engine nothing changes. Measured on 44 SWE-bench Verified tasks (night 6): 31 resolved with it against 30 without (p = 1.0, no measurable difference), the model used exec in all 44 tasks, and the median time per task was 7 min 7 s against 5 min 38 s without it. It stays on; DREAMFERENCE_MIGHTLING_EXEC_TOOL=freeform goes back to 1.6.0's behaviour.

A prompt for a machine with no network. ling prompt use offline (or DREAMFERENCE_MIGHTLING_PROMPT=offline for one run) starts sessions with the general prompt minus its web and email instructions, so the model is not told to run commands that cannot work where there is no network: a container, an air-gapped machine, a benchmark. default is unchanged.

apply_patch where the server can run it. Mightling now tells the agent about Codex's apply_patch editing tool when the model server is ling-engine, which runs that kind of tool; on the SGLang server a GB10 runs today the tool would be dropped by the server without a word, so nothing changes there and the agent edits through the shell as before. Night 5 was to measure an ordinary-function form of apply_patch on SGLang, and could not run: the Codex this release is built on accepts only the freeform form, so all 44 of that arm's tasks stopped at start, while the default resolved 29 of 44. The default is unchanged: no apply_patch tool on SGLang.

Benchmark nights, reproducible. The SWE-bench rounds that decide what ships now run from one script with the arms named (ARMS) and the harness commit pinned (REF), on this machine alone; the task lists are committed under docs/dev/swe-bench/, a later fresh list leaves out every earlier one (draw --exclude), and the 68 tasks whose pull request does not match its issue (PAIChecker's human-labelled list) are out of every list from night 2 on. A replay count (scripts/context_budget_replay.py compactions) reads compactions per task from a finished run, and the report now counts patches that broke a passing test apart from those that did not fix the issue, and shows compactions per run with their share of the agent's time. Night 4 measured a restart instead of a third compaction (--restart-after-compactions 2): 28 of 44 resolved against the default's 31 (−6.8 points, p = 0.453, no measurable difference), so the arm is dropped and the default stays: a session compacts as often as it needs.

Night Shift's morning report checks compactions. For the sessions of the day that compacted, the report's new Compactions section says whether each summary still names the files changed, the failed commands and the last test result. It reads the session files only, with no model call; compaction_audit = false in the [night] table switches it off.

The test suite is offline by construction. A test that would start the installed ling or connect to the model server now fails with the path or address in its message; the one module that tests the built binary opts in by name. The suite takes about two minutes, which the project guide now says instead of the eight seconds it used to claim.

Signal is no longer a preview. The Signal bridge (ling signal setup) has now been used against a real Signal account: linked to the owner's own account by QR code, a question asked in Note to Self and answered there, and /stop, with 1.6.0 as published. Nothing in the bridge changed for this. Matrix and Telegram (ling chat) keep their preview label: neither has yet been tested against a real homeserver or Telegram bot.

Signal says when the model is busy with a benchmark. While a benchmark run holds the model, a question from Signal is not answered, and Mightling now replies in Note to Self with the run, its progress and roughly how long is left, so you know when to ask again. Before, the reply was the raw server error.

Nodes on Wi-Fi are found again. Wi-Fi power saving, which Ubuntu's NetworkManager turns on by default, loses most of the multicast DNS your other computers find a GB10 by: on two GB10s on Wi-Fi up to ~80% of the queries went unanswered, and laptops could not find their node. ling-admin host setup and sudo ling-admin node prepare now turn it off for the Wi-Fi connection in use (nmcli connection modify <connection> 802-11-wireless.powersave 2, and iw dev <interface> set power_save off for now, with no reconnect, so an SSH session survives); ling-admin host check and node enable say when it is on, with the commands. On a Linux laptop, when ling finds no node and the laptop's own Wi-Fi saves power, it adds one line saying so, with the commands to run; it changes nothing itself. On Ethernet nothing changes and nothing is said.

Fixed

  • ling-admin node provision --web ran ling-admin ling start and ling configure, a subcommand ling-admin never had (a leftover of the rename), so --web failed at that step since 1.5.1; it now runs ling-admin chat start and chat configure there, and the dry run names the web UI instead of node enable --no-web.

Full Changelog: v1.6.0...v1.6.1