WuWei -- an Ajaxy web toolkit for Common Lisp

WuWei is a toolkit for building Ajax web pages and web sites in Common Lisp. It's designed to be light-weight, a toolkit rather than a platform.

Wu wei is Chinese for "effortless doing".


  • Continuation-based AJAX user interfaces
  • Server-side DOM operations (add/remove elements, visual fades, drag and drop)
  • High-level interfaces to in-place-editing and autocomplete widgets
  • Login and session management
  • OAuth2 client


May be run at the demo site: http://wuwei.name

For a real application, take a look at BioCyc Smart Tables.


WuWei was written primarily by Mike Travers, originally under the sponsorship of CollabRx, Inc. Some bits of it are derived from BioBike.


  • A Common Lisp implementation. WuWei has been run in Allegro, Clozure (aka OpenMCL), and SBCL, and ought to run in other implementations.
  • mtlisp, a utility package.
  • Other libraries (aserve or portable aserve, cl-json, and their dependencies)
  • Uses the Prototype and Scriptaculous JavaScript libraries (included in the source).


Easiest using QuickLisp:

  1. Install QuickLisp from http://www.quicklisp.org/
  2. Tell the install system where to find wuwei and mtlisp:

    (push #p"/misc/repos/wuwei/" asdf:central-registry) (push #p"/misc/repos/mtlisp/")

  3. (OpenMCL only) Unfortunately there are some incompatabilities with the distributed version of Portable AllegroServe and OpenMCL, so:
  1. Load everything:

    (ql:quickload "wuwei") (ql:quickload "wuwei-examples") ; if wanted

  2. Start the server

    (net.aserve:start :port 3333)

web, web framework