{"slug": "autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks", "title": "Autolith: The Common Lisp agent that rewrites itself and rocks", "summary": "Lambda Symbolics released Autolith, a self-modifying Common Lisp terminal programming agent that rewrites its own functions, methods, classes, macros, conditions, and global settings at runtime inside a live image. Autolith runs on Linux, macOS, FreeBSD, NetBSD, OpenBSD, and Windows, and is installable via `nix run github:lambda-symbolics/autolith`, a shell installer at sh.lambda-symbolics.com/autolith, or a git clone of github.com/lambda-symbolics/autolith. The agent uses Common Lisp's describe, conditions, restarts, CLOS protocols, and source forms at runtime, and applies recursive inference tools based on Recursive Language Models by Alex L. Zhang, Tim Kraska, and Omar Khattab to process data too large for a model's context limit.", "body_md": "### Conversations\n\nAppend-only portable S-expressions-based format which serves as a ledger of everything you said, AL said, and everything that happened, including errors and crashes.\n\nThe Common Lisp agent that *rewrites itself* and rocks.\n\nA self-modifying terminal programming agent inside a live image it can inspect, edit, break & recover, and shape to fit any use case.\n\n`nix run github:lambda-symbolics/autolith`` curl -fsSL https://sh.lambda-symbolics.com/autolith | sh``git clone https://github.com/lambda-symbolics/autolith && cd autolith && ./script/bootstrap`\nLinux, macOS, FreeBSD, NetBSD, OpenBSD, and Windows. [See more.](#install)\n\nAutolith is a self-sufficient runtime that lets agents maintain all sorts of states and tools, from MCP servers, to memories, additional tools, agendas and LSP servers. Some might say it's a mono**lith**.\n\nCommon Lisp provides `describe`, conditions, restarts, CLOS protocols, and source forms at runtime. The agent uses them to inspect and change its own implementation.\n\nFile search is powered through the amazing and blazingly fast [fff](https://github.com/dmtrKovalenko/fff.nvim) Rust library. Autolith can spawn and maintain persistent Lisp workers for experiments and scripts.\n\nYou can try it here. This syntax lets you send messages to sub-agents (you will see their responses if they decide to respond).\n\nRead as a call to `(prompt)`, addressed to the primary agent.\n\n You don't need to know Lisp.\n\nPlain text works, and most people never need to type a Lisp form.\n\nBut... If you want to learn it, AL is a good place to start: the input is a Lisp REPL, the agent sees what you typed, its result, and any condition (AKA error) it produced, so you can ask it why it failed and let it help you out. \n\nText, commands, tools, and Common Lisp are the same text input. A Lisp form runs in the Autolith image and the agent sees its result. Read a prompt off disk, template it, or, I dunno, generate it from the program you are debugging.\n\nAutolith keeps working while its children run. Talk to one to correct it while it's doing something. Its next text reply comes back to your terminal.\n\n Autolith replaces complete functions, methods, classes, macros, conditions, and global settings in its image at runtime. The change is instantly live.\n\nIf it outlives the process depends on you and Autolith. You can have changes that are persisted and changes that aren't.\n\n **self.redefine** compiles and installs a complete definition into the image and appends it to the journal.**self.exercise** runs asserts against the pending change to let Autolith verify it did not screw up the change.**self.diff** lets Autolith review all pending changes.**self.discard** is used to discard the live changes that did not really work out, or that you decided you don't want anymore.\n\n **self.commit** turns a pending change into an automatic commit in Autolith's internal git repo. That way, your modified image can be rebuilt when needed.\n\nIf you or Autolith somehow manage to crash the process, it will write a crash capsule, boot a separately built pristine image, and select a known-working generation from it.\n\n The conversation you had going on will come back and Autolith will immediately look into what caused the crash in read-only mode.\n\nYou can then decide, if there's anything to fix, if and how you want to fix it.\n\n**Note:** Most ordinary conditions (AKA errors) do not crash Autolith, but instead start its Lisp debugger and let you and the model decide how to handle the error. \n\n Every model has a hard limit on how much it can read at once.\n\nAutolith can work around it effectively. If you ask it to process a log, a codebase, or a folder of documents far too big to fit, it will use recursive inference tools to partition and process all the data, so it can answer questions about the whole thing.\n\nThe approach comes from [Recursive Language Models](https://arxiv.org/abs/2512.24601), by Alex L. Zhang, Tim Kraska, and Omar Khattab. Autolith is a compromise between a traditional agent and [**Prime Agent**](https://github.com/PrimeIntellect-ai/prime-agent) (which also rocks, by the way!), because it is still mostly a normal agent that just has RLM tools available.\n\nHere's how it broadly works: It writes small programs to search and slice the material, sends the parts that matter to itself in separate side conversations, and keeps just those answers. It's like an avalanche.\n\nAutolith will set a ceiling on calls and tokens before RLM starts, so a large question does not blow an insane amount of tokens.\n\n`src/*.lisp` files`inference:s2Wb1o2`, which the agent access like any other resource.\n Every Autolith instance has an authenticated local endpoint on loopback, keyed by the session ID. You can *(detach)*, and Autolith will continue your work in the background.\n\nThese are basic monitoring tools you can use to watch running Autolith sessions and instruct them. Autolith also has an authenticated Lisp REPL TCP endpoint, which lets you do anything you like to the agent, with no limitations.\n\nWe will support ACP very soon.\n\nCalling it a rock formation was considered, but none sounded that well, so old Windows NT terminology it is.\n\nThe result is an S-expression archive containing conversations, memories, agendas, plans, papercuts, and other session assets. You will not be surprised by something miraculously missing on import\n\nEven self-modified cores can be rebuilt on another machine by running their replay script.\n\nExecuted commands go through authorization checks before execution, just like in any solid agent.\n\nWe have a sandbox with process isolation and scoped filesystem access to limit accidental damage.\n\n`cl-exec-sandbox` is our platform abstraction for sandboxing, which works on Linux, Mac and Windows.`no_new_privs`, and seccomp. `--immutable` prevents Autolith from self-modifying when you need maximum predictability and security.\nAutolith has several tools and places where it can store information, each with a different purpose and functionality to remind the agent of their existence.\n\nScoped memories where general facts to be remembered are stored.\n\nLong term tracking and planning. Imagine it being like a limited-size Jira / Kanban board.\n\nShort-term temporary planning, if you've ever used Codex or Claude Code, you know what this is\n\nComplete replay scripts for durable definitions and settings.\n\nWe stole this from Nix. A generation contains a saved image version (core), and everything else needed to restore Autolith to a previous state.\n\nAL can have long-running child Lisp images in which it can develop and triage small programs and experiments. These can be checkpointerd and roll-backed too.\n\nStores are either append-only or transactional. Shared-state storage places are serialized across processes, meaning that 2+ AL instances can work in the workspace at the same time.\n\nConfiguration is files and Lisp forms, and the running agent can help you with both.\n\n`SKILL.md` with frontmatter, or native `SKILL.sexp` format, which can also load modifications into the AL image on load (so audit your skills before use).`directory-scopes.sexp`.`.autolith/agents/` and define tools, models, and efforts the role is assigned by default.`define-context-contributor` attaches what we call ephemeral notes to provider requests. You can use this to give the model temporary additional context to steer it better. They will quickly `define-application-command` is a simple macro that lets you add your own commands that affect the harness the agent, or well, anything else in your system. The result will be a plain Common Lisp function with some metadata, so you can easily test it by hand and ask AL to help you debug it. Adding commands is cheap, you can litter them like small `AGENTS.md`, no surprises here. Autolith can also create AUTOLITH.org, where it can track information that's specific to it and should not confuse other agents you might use.\nThe high testosterone, high estrogen way to install Autolith.\n\nInstalls or updates the packaged release for your platform. Then run `autolith`.\n\n`irm https://sh.lambda-symbolics.com/autolith.ps1 | iex`\nImagine running a good agent harness directly in PowerShell with the default color scheme, huh.\n\nThen sign in to a provider\n\nOnce you authenticate, it's time to have fun. Run `autolith` to get started.\n\n`(update)` inside AL, `autolith update` from the CLI\n  Yes, piping a URL into a shell is evil. Read the installer first, it's not so bad.\n\nNix is the preferred installation method on worthy operating systems.", "url": "https://wpnews.pro/news/autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks", "canonical_source": "https://autolith.rocks", "published_at": "2026-09-20 20:09:36+00:00", "updated_at": "2026-09-20 20:22:46.181411+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "large-language-models"], "entities": ["Autolith", "Lambda Symbolics", "Common Lisp", "Alex L. Zhang", "Tim Kraska", "Omar Khattab", "Recursive Language Models", "fff"], "alternates": {"html": "https://wpnews.pro/news/autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks", "markdown": "https://wpnews.pro/news/autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks.md", "text": "https://wpnews.pro/news/autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks.txt", "jsonld": "https://wpnews.pro/news/autolith-the-common-lisp-agent-that-rewrites-itself-and-rocks.jsonld"}}