A web-based IDE for Clafer.
ClaferIDE is part of Clafer Tools. Read more in the paper Clafer Tools for Product Line Engineering.
- Master branch (stable and released): ClaferIDE
- Develop branch (with latest features, but may be unstable): ClaferIDE (development)
If the demo is down or you encounter a bug, please email Michał Antkiewicz.
See clafer.org.
- Provides a web-based IDE for modeling in Clafer.
- Provides an source code editor (ACE).
- Compiles the model to HTML for syntax highlighting and navigation via hyperlinks or error highlighting.
- Instantiates the model using ClaferIG and allows for global scope setting and requesting a next instance.
- Provides a set of predefined examples that can be compiled and instantiated.
- Temporal (behavioral) Clafer models can be edited and compiled; instance generation supports only static models.
ClaferIDE is a web-based application.
Its server side (implemented with Node.js) processes requests, runs the chosen back-end and passes back its output.
The client-side is implemented using JavaScript/HTML and handles all the IDE functionality.
- Alexandr Murashkin. Original developer.
- Michał Antkiewicz. Research Engineer. Requirements, development, architecture, testing, technology transfer.
- Eldar Khalilov. Developer. Upgrade to 0.4.2 (replace XML with JSON, test suites).
- Java Platform (JDK) v17+
- Clafer v0.5.3
- can be from the binary distribution
- Node.js, tested with v26
- Backends' dependencies must be satisfied. See the backend installation steps below.
Core
- Download (
git clone) ClaferIDE to some directory<target directory> - Go to
<target directory>/ClaferIDEand execute
git submodule init
git submodule update
This will install the platform.
When working with a branch other then master, you need to additionally checkout that branch (e.g., develop):
git submodule foreach git checkout develop
- Go to
<target directory>/ClaferIDE/Serverand execute
npm install
This will download all the required Node.js modules.
- Install the backends
clafer,claferIG,chocosolverinto some location<bin>found onPATH. The backends inServer/Backends/backends.jsonrun them fromPATH.
The fastest way is to unzip a binary distribution into the folder <bin>.
See Installing Backends for detailed steps.
- Make sure the port
8094is free, or change the value of the keyportinServer/config.json:"port" = "8094"to any free one.
Optional limits and settings in Server/config.json:
allowedModelURLs: prefixes of the URLs from which models can be opened with?claferFileURL=..., for example the ClaferWiki URLhttp://<wiki host>:<wiki port>/clafer/; opening models from URLs is disabled when the list is emptymaxSessions(default 50): the maximum number of concurrent sessionsmaxUploadSize(default 16 MB): the maximum size of a submitted model or instance datauploadsPerMinute(30),commandsPerMinute(300),pollsPerMinute(600): rate limits per client IP addresstrustProxy: Express'strust proxysetting when running behind a reverse proxy (e.g.,"loopback"or1), so that the rate limits apply per client
The environment variables ALLOWED_MODEL_URLS (URL prefixes separated by spaces) and TRUST_PROXY override allowedModelURLs and trustProxy, e.g., when running in a container.
-
Make sure
clafer,claferIG,chocosolver,node, andjavaare inPATHenvironment variables, so they can be executed without any path prefixes. -
Running the following commands should produce the following results or later version:
clafer --version
Clafer 0.5.3
claferIG --version
ClaferIG 0.5.3
chocosolver --version
chocosolver v0.5.3.2026-10-15
java -version
openjdk version "17"
node -v
v26.11.1
-
Make sure
uploadsfolder is accessible for writing, since temporary files will be stored there. -
If you use Shell scipts (
.sh) for running, make sure the scripts haveExecutepermissions.
- To run the server in a standard mode, execute
cd <target directory>/ClaferIDE/Server/
node ClaferIDE.js- If you use
Node Supervisorunder Linux, you can execute
cd <target directory>/ClaferIDE/Server/commons
chmod +x start.sh
./start.shThen you can go to any browser and type http://localhost:[port]/ and open any Clafer file with objectives in it.
- Choose
Simple model of a Personexample in the dropdown box in the upper-left corner of the tool window. - Press
Compilebutton right in the front of the drop down list. - Once you see the compilation is complete, go to
Instance Generatorview and pressRunthere (the default backend isAlloy-based IG (IG only)). - The
Outputview should print the first generated instance.
All related projects are following the simultaneous release model.
The branch master contains releases, whereas the branch develop contains code under development.
When building the tools, the branches should match.
Releases from branches master are guaranteed to work well together.
Development versions from branches develop should work well together but this might not always be the case.
- Visit language's website.
- Report issues to issue tracker