Common Lisp

repo: CodyReichert/awesome-cl
category: Programming Languages


Awesome Common Lisp Awesome Assertible status

A curated list of awesome Common Lisp libraries.

All libraries listed here are available from [Quicklisp][16] unless stated otherwise. The ones marked with a ⭐ are so widespread and solid that they became community standards. You can't be wrong with them. This is the case for Quicklisp, BordeauxThreads and such. Libraries denoted with a 👍 are the ones we like and want to promote here at the Awesome-cl list. They proved solid, they may solve a problem better than a community standard but they aren't as widespread, or not considered as stable. For example, we prefer Spinneret over Cl-Who.


For a list of software, see the lisp-screenshots.org gallery and the awesome-cl-software list.

For examples of companies using CL in production, see lisp-lang.org's success stories, the awesome-lisp-companies list, but also LispWorks' success stories and Allegro's success stories.


Add something new! See the contributing section for adding something to the list.

This is released under the GNU Free Documentation License - its text is provided in the LICENSE file. Preference is given to [free software][13] and sellers who aren't evil for physical resources.

Table of Contents

Artificial Intelligence (AI, LLMs)

Around the OpenAI API

demos: cl-rag-example and cl-chat, a LLM chat library and web UI.

Work In Progress:

  • Caten - Deep Learning Compiler based on Polyhedral Compiler and Light-weight IRs, and Optimizing Pattern Matcher, written in Common Lisp

MCP servers

  • cl-MCP - MCP for Common Lisp.
    • provides a newline‑delimited JSON‑RPC 2.0 transport over stdio or TCP, a small protocol layer (initialize, ping, tools/list, tools/call), and a REPL tool that evaluates forms and returns the last value.
  • 40ants-MCP - a framework for building Model Context Protocol servers in Common Lisp.
  • mcp-lisp - Common Lisp SDK for MCP (2025-11-25) with full conformance (44/44 checks) and limited A2A support. Supports stdio and SSE transports, tools, resources, prompts, structured errors, and access logging. [MIT][200].
  • Lisply MCP - a generic Node.js wrapper meant to work with pretty much any language backend which can support "eval" and http .
    • By default, it comes configured to work with an existing reference-implementation backend CL-based container image which it will pull and run on-demand.

Machine Learning

  • MGL - a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more. [MIT][200].
  • clml - originally developed by Mathematicl Systems Inc., a Japanese company. With a tutorial. [LLGPL][8].
  • antik - a foundation for scientific and engineering computation in Common Lisp. GPL. Also mgl-mat and LLA.

Credit: borretti.me's State of CL Ecosystem 2015.

  • llama.cl - implementation of Llama inference operations. MIT.
    • "Enables researchers and developers to explore LLM techniques within the Common Lisp ecosystem, leveraging the language's capabilities for interactive development and integration with symbolic AI systems."

Natural Language Processing

  • 🚀 sparser - A natural language understanding system for English. [Eclipse][209].
    • a model-driven, rule-based language text analysis system for large volume, high-precision information extraction. At its heart, Sparser is a bottom-up, phrase-structure-based chart parser, optimized for semantic grammars and partial parsing.

  • cl-nlp - Natural language processing toolset. [Apache2.0][89].
  • babel2 - A Fluid Construction Grammar implementation, computational framework, and unification-based grammar formalism [Apache2.0][89].

Expert Systems

  • Lisa - a production-quality, forward-chaining expert system shell featuring an optimized implementation of Charles Forgy's Rete algorithm, a highly efficient solution to the difficult many-to-many pattern matching problem. MIT.
  • WouldWork - solve classical planning and constraint satisfaction problems without extensive programming experience. BSD_3Clause.

Educational

Audio

Music composition:

  • OpenMusic visual programming / computer-aided composition environment. [GPL3][2]. Developped at IRCAM, France.
  • OM7 - a new implementation of the OpenMusic visual programming and computer-aided composition environment including a number of improvements on graphical interface, computational mode, and connection to external software libraries. [GPL3][2].
    • an extension: rq - a library for rhythm transcription in OpenMusic (version 6.10 and later). demo video. [GPL3][2].
  • Incudine - Music/DSP programming environment for Common Lisp. Useful to design software synthesizers or sound plugins from scratch. It is also a compositional tool that allows to produce high quality sounds controllable at the sample level, defining and redefining the digital signal processors and the musical structures on-the-fly.
  • CLM - Common Lisp Music is a music synthesis and signal processing package in the Music V family. It provides much the same functionality as Stk, Csound, SuperCollider, PD, CMix, cmusic, and Arctic — a collection of functions that create and manipulate sounds, aimed primarily at composers (in CLM's case anyway).
    • common-tones - a fork of CLM5 with modern Lisp (ASDF, cffi…). [BSD_3Clause][15].
  • Slippery Chicken - Algorithmic composition library which outputs Midi, Common Music Notation, pdf-score via Lilypond and sound via Common Lisp Music. [GPL3][2].
    • with documentation: https://michael-edwards.org/sc/
  • Common Music - the repository of an ancient version of Common Music (version 2.12.0), the presumably last version which ran on Common Lisp dating from around 2007-09, before work on Common Music shifted to (scheme-based) cm3.
    • note: old project but working.
    • cm-incudine - extends Common Music 2 with realtime capabilities. GPL2.
  • cl-patterns - a system for composing music via Lisp code, heavily inspired by SuperCollider’s patterns system, with aims to implement much of it, but in a more robust, expressive, consistent, reflective, and lispy way. Audio output through SuperCollider, with preliminary support for Incudine, and MIDI through ALSA.
  • Music - A framework for musical expression in Lisp with a focus on music theory (built from scratch, unrelated to Common Music).

Decoders, sound processing:

  • Harmony - A real-time sound processing and playback system. [zlib][33].
    • "provides you with audio processing tools as well as an audio server to play back music, sfx, and so forth."
    • using cl-mixed for the mixing and sound processing library.
  • easy-audio - a collection of audio decoders and metadata readers.

others:

  • scheduler - The time based musical event scheduler for Common Lisp. [Apache2.0][89].
  • [Common Music Notation](https://ccrma.stanford.edu/software/cmn/) - Common Music Notation (CMN) provides a package of functions to hierarchically describe a musical score. Public domain.
  • osc - an implementation of the Open Sound Protocol. [LGPL2.1][11].

bindings and clients to other software and libraries:

and more audio software targetting musicians on awesome-cl-software#audio (Opus Modus, OpenMusic…).

Build Systems

  • ASDF - Another System Definition Facility; a build system for Common Lisp. [Expat][14]. Quicklisp (see library manager) uses ASDF under the hood.
    • known ASDF extensions, such as asdf-system-connections, that lets you specify systems that are automatically loaded when two other systems are loaded, to connect them.
  • asdf-viz - a tool to visualize the library dependencies of ASDF systems, the call graph of a function and the class inheritances. [LLGPL][8].

See also:

  • modularize - A modularization framework for Common Lisp. [zlib][33].
    • provides a common interface to segregate major application components.
    • for instance, by adding module definition options you can introduce mechanisms to tie modules together in functionality, hook into each other and so on.
    • acts as a wrapper around defpackage and integrates into ASDF.
  • asdf-linguist - Extensions for ASDF for compiling various languages and running various preprocessing tools on files in your project. [Expat][14].
    • Sass, LESS, Myth, C, C++, Fortran, CSS/JS minifiers, ParensScript, Make, CMake, org-mode, pandoc, dot, diita…
    • currently archived and unmaintained.
  • asdf-dependency-traverser - a small utility for traversing the dependency tree of an ASDF system. Zlib.

Compilers, code generators

APL

  • April - The APL programming language (a subset thereof) compiling to Common Lisp. Replace hundreds of lines of number-crunching code with a single line of APL. [Apache2][89].

C, C++

  • C-mera - a source-to-source compiler that utilizes Lisp's macro system for meta programming of C-like languages. [GPL3][2].
  • lispc - a powerful "lispsy" macrolanguage for C. [MIT][200].
  • with-c-syntax - a fun package which introduces the C language syntax into Common Lisp. (Yes, this package is not for practical coding, I think.) WTFPL Licence.
  • ecrepl - an interactive REPL for the C language. [BSD_2Clause][17].
  • Software-Evolution-Library - The SEL enables the programmatic modification and evaluation of software (C/C++ support using Clang, compiled assembler, and linked ELF binaries). [GPL3][2].
  • vacietis - C to Common Lisp compiler. [LGPL3][9].
  • NEW as of 2025 Cicili - C generator macro-driven language. GPL3.0.
    • "can use lisp libraries to produce compile time content like html, json, sql, ... for inside C generated code".

Cryptography

  • Ironclad - A library of crypto functions for Common Lisp. Not considered secure, but is still useful for the message digest functions. [Expat][14].
  • crypto-shortcuts - Collection of common crypto shortcuts. [zlib][33].
  • cl-ssh-keys - Common Lisp system for generating and parsing of OpenSSH keys. [BSD_3Clause][15].
  • cl-bcrypt - Common Lisp system for parsing and generating bcrypt password hashes. [BSD_3Clause][15].
  • gpgme (GnuPG Made Easy) is the standard library to access GnuPG functions from programming languages. It provides an official Common Lisp system.
  • cl-frugal-uuid - Common Lisp UUID library with zero dependencies. [MIT][200].

Cryptocurrencies

  • [bitcoin-core-rpc](https://codeberg.org/kilianmh/bitcoin-core-rpc/) - a (hopefully) complete Bitcoin Core RPC client. [AGPL-3.0+][agpl3]
  • bp - Bitcoin Protocol components in Common Lisp. [MIT][200].
  • peercoin-blockchain-parser - parse the blockchain contained in a file and export some of its data to a text file, a SQL script or a database. It can also create a database using the RPC of a Peercoin daemon as source of data instead of a blockchain file. LGPL3. Not in Quicklisp.
  • peercoin-calculator - This program gives you the probability of generating a POS or POW block within 10 minutes, 24 hours, 31 days, 90 days and 1 year, as well as the reward that can be expected. GUI in Qt. [GPL3][2]. Not in Quicklisp.
  • peercoin-vote - A voting system based on data from the blockchain (addresses and balances). [GPL3][2]. Not in Quicklisp.
  • stacks-api - a Stacks API client. [AGPL-3.0][89]

See also legochain, a simple educational blockchain; emotiq, a next-generation blockchain with an innovative natural-language approach to smart contracts built in Common Lisp (stopped).

Database

  • postmodern - A library for interacting with PostgreSQL. [zlib][33].
  • cl-dbi - A database-independent interface for Common Lisp. [LLGPL][8].
  • sxql - A DSL for generating SQL. [3-clause BSD][15].
    • NEW as of Oct, 2025: a composable query builder. Queries become first-class values that can be derived, combined, and reused without side effects.
  • cl-sqlite - Bindings for SQLite. Public domain.
  • cl-yesql - SQL statements live in their own files, in SQL syntax, and are imported into Lisp as functions. You are not limited to the features a DSL supports. Based on Clojure's Yesql. [MIT][200].

See also:

  • endatabas - Schemaless SQL document database with full history. [AGPL-3.0][89].
    • built in Common Lisp and Rust, in development.

ORMs

  • 👍 mito - An ORM for Common Lisp with migrations, relationships and PostgreSQL support [BSD_3Clause][15].
    • mitho-auth, a mixin class for use authorization
    • mito-attachment, a mixin class for file management outside of RDBMS.
    • works best coupled with SxQL and its Query Composer.
  • clsql - An SQL database with a Common Lisp interface. [LLGPL][8].
  • datafly - A lightweight database library. [3-clause BSD][15].

Persistent object databases

See also the Caching (serialization) section.

Graph databases

  • AllegroGraph - a high-performance, multi-model (document and graph), entity-event knowledge graph technology.
    • Proprietary, with a free version of a limit of 5 million RDF triples.
    • with a hosted version
    • AllegroGraph 8.0 - "incorporates Large Language Model (LLM) components directly into SPARQL along with vector generation and vector storage for a comprehensive AI Knowledge Graph solution."
  • cl-agraph, a minimal client for AllegroGraph.
  • neo4cl - a library for interacting with Neo4J. Sends Cypher queries to a Neo4J server, and decodes the responses into something useful for processing in CL. [Apache2][89].
  • vivace-graph - graph database & Prolog implementation. Takes design inspiration from CouchDB, neo4j and AllegroGraph. It implements an ACID-compliant object graph model with user-defined indexes and map-reduce views. It also implements a master / slave replication scheme for redundancy and horizontal read scaling. Querying the graph is accomplished via a number of Lisp methods or via a Prolog-like query language. [MIT][200].
    • "I have used Vivace Graph as an online catalog for millions of products, as the back end for a complex, adaptable VoIP-based IVR, as well as data store for several complex big data analysis systems, and finally as the engine for two recommender systems." (issue #23)
    • "Why is vivace graph so fast? I have been comparing it with SQL-based approach and Neo4j, and vivace graph is much, much faster."

and also:

  • restagraph - an app that dynamically generates REST APIs for a Neo4j database, using a schema defined within the database. [GPL3][2].

Other DB wrappers

  • cl-memcached - Fast, thread-safe interface to the Memcached object caching system. [Expat][14].
  • cl-redis - Redis client. [Expat][14].
  • cl-disque - Disque client. [3-clause BSD][15].
  • cl-rethinkdb - RethinkDB client. [Expat][14].
  • cl-mango - A minimalist CouchDB 2.x database client. BSD_3Clause.
  • lmdb - Bindings to LMDB, the Lightning Memory-mapped Database, an ACID key-value database with MultiVersion Concurrency Control.
  • cl-ndbapi - bindings to the C++ NDB API of RonDB, "the world's fastest key value store", by Dydra. GPLv2.
  • cl-duckdb - Common Lisp CFFI wrapper around the DuckDB C API. [MIT][200].
  • cl-bunny - Common Lisp RabbitMQ client based on IOLib. MIT.

Migration tools

(recall that Mito handles migrations)

  • cl-migratum - a system which provides facilities for performing database schema migrations, designed to work with various databases. [BSD_3Clause][15].
  • postmodern-passenger-pigeon - a migration manager for postmodern. No licence specified.

To third parties

  • dyna - an AWS DynamoDB ORM. [MIT][200].
  • cl-influxdb - an interface to the Time Series Database InfluxDB. [MIT][200].
  • cl-remizmq - ZeroMQ sockets, messages, timers, atomics, and proxies.
    • low-level and high-level APIs. Tested with libzmq 5.2.5, any v4.x and v5.x should work, v3.x may as well.
  • coalton-zmq - ZeroMQ interface for Coalton.
    • "It's complete enough to be useful for building apps that use ZeroMQ". Many of the official ZeroMQ examples are implemented.

Tools

Data Formats

CSV

  • cl-csv - A library for parsing CSV files. [3-clause BSD][15].
  • cl-decimals - Decimal number parser and formatter. Public domain.
  • auto-text - automatic (encoding, end of line, column width, csv delimiter etc) detection for text files. [MIT][200]. See also inquisitor for detection of asian and far eastern languages.
  • csv-validator - Validates tabular CSV data using predefined validations, inspired from its Python homologue "Great Expectations". [BSD_3Clause][15].

See also: cl-duckdb for fast parsing, lisp-stat's data-frames read-csv, vellum-csv (data frames library), vellum-duckdb.

JSON

  • 👍 jzon - a correct, safe and fast JSON parser. [MIT][200].
    • jzon is the only CL JSON library which correctly declines all invalid inputs per the official JSON test suite and accepts all valid inputs per that suite.
    • it doesn't crash on invalid input (jsown), doesn't choke on large datasets (Jonathan), and more.
    • "I believe jzon to be the superior choice and hope for it to become the new, true de-facto library in the world of JSON-in-CL once and for all."
  • shasht - Common Lisp JSON reading and writing for the Kzinti. [MIT][14].
    • "Shasht is one of the two new libraries that I particularly like and is already in quicklisp. It is fast, it handles null correctly, it encodes CLOS objects, structures and hash-tables. It can also do incremental encoding." Sabra Crolleton.
  • cl-json - A highly customizable JSON encoder and decoder. [MIT][14].
    • "cl-json and yason are still the work horses if you need fine control, but speed is not their forte." @sabracrolleton
  • parcom/json - An extension to parcom for simple, fast, no-dependency JSON parsing.

See this extensive comparison of many more JSON libraries, as well as these benchmarks.

JSON tools:

  • NJSON - Parser-agnostic JSON indexing (with JSON Pointer support), destructuring, and validation framework. [BSD][15].
  • json-mop - A metaclass for bridging CLOS and JSON objects. [MIT][200].
    • depends on YASON
    • for JSON libraries that don't do it natively (jzon, shasht and cl-json are able to encode CLOS objects to JSON out of the box, and cl-json has the ability to decode JSON objects into a "fluid-class" CLOS object.)

truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?