This page doesn't emphasize the cordis architecture [1], but that's the most exciting thing about this -- not just yet another harness. It has the potential to make this into something like the emacs of harnesses! I think this might be particularly potent for long-running agents.
Would you be interested in a self-modifying harness written in Common Lisp? If so, then please check out Autolith: <a href="https://github.com/lambda-symbolics/autolith/" rel="nofollow">https://github.com/lambda-symbolics/autolith/
In my time using it with GLM 5.2, I've observed it modify itself to disassemble binaries in search of answers - without me needing to ask it to do so. Very powerful stuff. Here's what it looked like:
◇ reasoning summary
│ The 200MB binary grep with regex backtracking is too slow. Let me write the strings out first (using grep -a with simple fixed patterns is fine; regex with .{0,80} on binary is slow). Better: use SBCL to do
│ a fast binary search, or use tr to split null-separated strings then grep fixed strings. Let me use a quick approach: grep -ao with fixed patterns only (no regex), which was fast before.
│
│ To extract context, I can use SBCL to load the file into memory (206MB is fine) and search for occurrences with bounded context. Let me do it in a Lisp worker.
▸ lisp.eval
(lisp.eval :form "(with-open-file (in \"/nix/store/g7b3p8ypxmdycry9wilil8mwl084kplw-antigravity-cli-1.1.19/bin/agy\" :element-type '(unsigned-byte 8))
(let* ((data (make-array (file-length in) :element-type '(unsigned-byte 8)))
(_ (read-sequence data in))
(haystack (sb-ext:octets-to-string data :external-format :latin-1)))
(flet ((find-all (needle)
(let ((out '()) (start 0))
(loop for pos = (search needle haystack :start2 start)
while pos do (push pos out) (setf start (+ pos (length needle))))
… +10 more lines
│ (with-open-file (in "/nix/store/g7b3p8ypxmdycry9wilil8mwl084kplw-antigravity-cli-1.1.19/bin/agy" :element-type '(unsigned-byte 8))
│ (let* ((data (make-array (file-length in) :element-type '(unsigned-byte 8)))
│ (_ (read-sequence data in))
│ (haystack (sb-ext:octets-to-string data :external-format :latin-1)))
│ (flet ((find-all (needle)
│ (let ((out '()) (start 0))
│ (loop for pos = (search needle haystack :start2 start)
│ while pos do (push pos out) (setf start (+ pos (length needle))))
│ … +9 more lines
lisp.eval cpu 0.205s · real 4.018s
│ Output:
│ settings.json positions: (89311959 90892289 90918553 90945997 90985371 91164238
│ 91164426 91171707 91275241 91297838 91299802 91299923
│ 91629274 96365298 96370345 96398990 96405347 96406738
│ 96414968 96419796 96426018 96429189)
│ --- 89311959
│ oughDependency: NestedType: OutputType: Deprecated: AllowAlias: Annotation: SourceFile: rsa-sha2-512rsa-sha2-256hmac-sha1-96ssh-userauthkey exchangedirect-tcpipForwardAgentGatewayPortsTCPKeepAlivedefault no…
│ --- 90892289
│ ks=%v)conversation file not found in source directory: %sfailed to create cache directory for conv cache: %vBalanced speed and reasoning quality for most tasksPrepared switch to default agent (will %s on ex…
│ --- 90918553
│ on-interface type passed to Type.Implementsreflect.Value.Slice: string slice index out of boundsUse /feedback to share your experience with the team.Transition failed: ForkConversation returned empty IDpers…
│ --- 90945997
… +14 more lines
◇ reasoning summary
│ The binary confirms:
│ - modelProvider in settings.json selects the Gemini API backend with GEMINI_API_KEY.
│ - There's a regex ^(?:gemini-api:|blade:|evergreen:|beyond-api:)(?:.*?/models/(.+)|(?:.*/)?([^/]+))$ — model references with provider prefixes.
│ - "No title command configured in settings.json. Please add a "title" block." — settings keys.
│
│ Now I need to find the settings struct JSON tags for the model field. Let me search for json:"model" again with wider context, and also for the string "title" block and other settings-related keys like
│ "theme".
Interesting, I see it was announced here some time ago but I missed it: <a href="https://news.ycombinator.com/item?id=49376197">https://news.ycombinator.com/item?id=49376197
(The name sounds a bit like autolytic, evoking self-harm. Which may be appropriate after all.)
ssivark · · focus · HN ↗
[1] <a href="https://arxiv.org/abs/2608.25512" rel="nofollow">https://arxiv.org/abs/2608.25512
evanjrowley · · focus · HN ↗
Would you be interested in a self-modifying harness written in Common Lisp? If so, then please check out Autolith: <a href="https://github.com/lambda-symbolics/autolith/" rel="nofollow">https://github.com/lambda-symbolics/autolith/
In my time using it with GLM 5.2, I've observed it modify itself to disassemble binaries in search of answers - without me needing to ask it to do so. Very powerful stuff. Here's what it looked like:
kgwgk · · focus · HN ↗
(The name sounds a bit like autolytic, evoking self-harm. Which may be appropriate after all.)