Lambda Symbolics

Autolith: the agent is a live Lisp image

A terminal coding agent written in Common Lisp and running inside SBCL. It owns its model loop, tools, conversations, memory, self-modification, checkpoints, and recovery while the conversation continues.

Source remains authoritative. The image remains alive.

Autolith · Resident agent
The Autolith mascot, rendered in black ink and bitmap dither on paper

One agent owns the whole loop

Autolith is not a wrapper around another coding-agent process. Its Common Lisp image contains the provider client, terminal interface, tool registry, conversation state, persistent memories, workspace agenda, and the code that decides what happens next.

It talks directly to the ChatGPT Codex subscription service. The Codex CLI is neither launched nor bundled. Filesystem, shell, search, memory, and Lisp operations remain explicit tools with visible results.

Autolith 0.11.0 · Properties
Runtime
SBCL 2.6.4
Platform
Linux x86-64
Interface
responsive terminal with editable queued input
Provider
direct ChatGPT Codex subscription transport
Language
Common Lisp
Repository
luciusmagn/autolith
The active image · self.*
self.inspect             active bindings and docs
self.source              complete tracked definitions
self.eval                immediate active-image probes
self.redefine            install one definition live
self.persist-definition install, check, and retain
self.checkpoint          save a working generation
Disposable Lisp workers · lisp.*
lisp.start       named pristine or saved REPL
lisp.eval        exploratory Common Lisp
lisp.source      matching hash-verified SBCL source
lisp.run-tests   ASDF tests outside the agent heap
lisp.save-image  immutable instrumented worker

Change a definition without ending the conversation

Autolith can inspect and replace complete functions, methods, classes, macros, conditions, and global settings in its running image. An exploratory change takes effect immediately and is recorded in an append-only mutation journal.

A useful change can then become a private image commit. The commit contains a manifest and a complete executable Lisp replay script, retained in a separate private Git history. It changes the active agent without quietly patching the tracked source repository.

A representative mutation transaction
self.source APPLICATION-TOOL-CALL-ENTRY
← complete tracked DEFMETHODself.redefine
  (defmethod application-tool-call-entry ...)
← compiled and installed in the active image

→ self.diff
← one reconstructible live mutation

→ self.commit "Improve tool-call presentation"
← private image commit commit-id
  complete reconstruct.lisp retained in private Git

A working state has several kinds of memory

Source, conversations, useful facts, live mutations, exact heaps, and disposable experiments have different lifetimes. Autolith keeps them separate instead of pretending that one database or one saved core is everything.

Persistent surfaces · Reconstruction evidence
Conversations Append-only portable S-expressions with exact resume commands and crash-tail repair.
Memories Workspace or global facts, preferences, and decisions with bounded prompt recall.
Agendas Short workspace tasks and notes, available in full on every request.
Private image commits Complete replay scripts for durable user-specific definitions and settings, retained in private Git.
Generations A saved active core, exact tracked source commit, reconstruction script, manifest, and journal position.
Worker images Immutable experimental SBCL cores with parentage and durable notes, never selected as the active agent.
Recovery A separately built pristine image that can inspect a crash and select a known-working generation without loading the damaged core.

Field notes

Everyday work · Included surfaces
Terminal Multiline editing, completion, ordinary scrollback, and drafts that remain editable while tools and model responses run.
Workspace search Warm in-process path, glob, plain, regular-expression, fuzzy, and multi-pattern search through fff.
Implementation work Hash-verified matching SBCL source, named isolated REPLs, and side-by-side pristine and instrumented worker images.
Source boundary Autolith can develop its own repository when deliberately run there; private live mutations never masquerade as tracked source commits.
Immutable mode An optional startup mode keeps self-inspection while withholding active-image mutation tools.

Run the pinned Linux build

Autolith currently targets Linux x86-64 and pins SBCL, every Lisp dependency, and its native helper sources. Nix can build and run the package directly, or the repository bootstrap can materialize the same locked project setup.

Autolith executes model-generated code with your user privileges. Its process boundaries protect reliability, not against hostile code. Use it as a development agent, not as a security sandbox.

Quick start · Nix or source
Run the flake
$ nix run github:luciusmagn/autolith -- --auth
$ nix run github:luciusmagn/autolith

Build from the repository
$ git clone https://github.com/luciusmagn/autolith
$ cd autolith
$ ./script/bootstrap
$ ./script/check
$ ./bin/autolith --auth
$ ./bin/autolith