CLAM allows you to quickly and transparently transform your Natural Language Processing application into a RESTful webservice, with which both human end-users as well as automated clients can interact. CLAM takes a description of your system and wraps itself around the system, allowing end-users or automated clients to upload input files to your application, start your application with specific parameters of their choice, and download and view the output of the application once it is completed.

CLAM is set up in a universal fashion, requiring minimal effort on the part of the service developer. Your actual NLP application is treated as a black box, of which only the parameters, input formats and output formats need to be described. Your application itself needs not be network aware in any way, nor aware of CLAM, and the handling and validation of input can be taken care of by CLAM.

CLAM is entirely written in Python, runs on UNIX-derived systems, and is available as open source under the GNU Public License (v3). It is set up in a modular fashion, and offers an API, and as such is easily extendable. CLAM communicates in a transparent XML format, and using XSL transformation offers a full web 2.0 web-interface for human end users.

CLAM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation.

CLAM is written by Maarten van Gompel, Centre of Language Studies, Radboud University Nijmegen.


Please consult the CLAM Manual for extensive documentation:


For additional support and announcements please join the CLAM Mailing List. Check back often as updates are released regularly for CLAM. These can be easily installed through github or the Python Package Index. Bug reports, feature requests and requests for assistance can be submitted through github, the mailing list, or by mailing to

A public roadmap of planned features for the future, as well as bug reports about existing features, can be found on the CLAM Issue Tracker. Feel free to add any problems or feature requests if you have a (free) github account!

CLAM support is funded by the NWO CLARIN-NL programme.

Download and installation

CLAM is maintained at the Python Package Index. It is available for Linux and other UNIX-like distributions and is intended for users who want to build a webservice around their own tool, want to write a client for existing CLAM webservices, or are system administrators setting up existing CLAM services.

To automatically download and install CLAM from the Python Package Index, the convenient tool easy_install is available:

$ sudo easy_install clam

If easy_install is not yet available on your system, install it by installing the package python-setuptools:

The source code is also available through the source code repository at github, and can be cloned as follows: $ git clone git://

Please consult the CLAM Manual for further instructions. After reading the manual, it is recommended to watch the CLAM tutorial videos at the bottom of this page.


CLAM architecture

CLAM has a layered architecture, with at the core the NLP application(s) you want to turn into a webservice. The application itself can remain untouched and unaware of CLAM. The scheme on the right illustrates the various layers.

Read more in the CLAM Manual and also see the CLAM poster presented at CLIN 21.

Instruction videos

Part I - In this first video we will create a simple webservice around an ad-hoc NLP application.

Part II - We will expand the webservice we created in the first video.

Part III - We will take a deeper look into the metadata and parameter abilities of CLAM.

Part IV - In this video we will see how to write a client in Python to connect to the webservice we created earlier. We will use the CLAM Client API