Alchemist: A Simulator for Pervasive and Aggregate Computing, Built for Extensibility
Alchemist: an extensible simulator for pervasive computing
At a glance
- What is it?
- Alchemist is a Kotlin-based simulator for pervasive, aggregate, and nature-inspired computing. It emphasizes extensibility and is documented via a dedicated website, but its license is marked NOASSERTION, which warrants attention before adoption.
- Who is it for?
- Alchemist is for researchers and engineers who need a highly extensible simulator for pervasive and aggregate computing scenarios, especially those in academic settings. It is not for teams that require a turnkey tool with a clear commercial license, since the license is marked NOASSERTION and the academic attribution requirement is explicit.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 7, 2026, and from our analysis. They are not legal advice.
Star history
- AlchemistSimulator/Alchemist56 ★ · +2
| Repository | 2026-08-21 | 2026-10-07 |
|---|---|---|
| AlchemistSimulator/Alchemist | 54 | 56 |
2 Stars in the last 47 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What Alchemist Solves and Who It Serves
Alchemist addresses the challenge of simulating large-scale pervasive computing systems, where many devices interact in a physical space and exhibit aggregate behavior. It is also suited for nature-inspired computing, where algorithms mimic biological or chemical processes. The primary audience is academic researchers and engineers working on distributed systems, sensor networks, or swarm intelligence. The README explicitly targets academics, providing a citation requirement for publications. This is a niche tool: it is not a general-purpose network simulator, but a specialized platform for studying emergent behavior in spatially distributed computational systems.
The Chemical-Oriented Core: How Alchemist Works
Alchemist's mechanism is rooted in the metaphor of chemical reactions. The founding paper, cited in the README, describes it as 'Chemical-oriented simulation of computational systems.' The core idea is that each device in the simulation has a state, and the environment contains 'molecules' that represent data or signals. Devices interact based on reaction rules, which are defined by the user. These rules specify when a reaction occurs and what state changes it produces. This abstraction allows modeling of complex, decentralized algorithms, such as gradient propagation or gossip protocols, without writing low-level event handlers. The simulator engine handles the scheduling of reactions and the movement of molecules across the space. The extensibility comes from the ability to define new reaction types and new environments, which is a central design goal.
Getting Alchemist Running: Build and Configuration
Alchemist is built with Kotlin and uses a Gradle-based build system, as is typical for Kotlin projects. The README points to the official website, alchemistsimulator.github.io, for full documentation. From the repository, you would clone the project and build it using Gradle. The exact commands are not in the README, but standard Kotlin/Gradle workflows apply: `git clone https://github.com/AlchemistSimulator/Alchemist.git`, then `./gradlew build` to compile. The simulator is configured via YAML files, as per the project's documentation, which define the simulation environment, the devices, and the reactions. For instance, you specify the 'incarnation' (the type of chemistry), the 'variables' for device states, and the 'reactions' with their rates and conditions. The DIVIO documentation system separates tutorials, how-to guides, and reference material, so you should start with the tutorials to understand the YAML syntax.
A Genuine Limitation: The NOASSERTION License Problem
The most immediate limitation is the license field, which is marked 'NOASSERTION.' This means the repository does not declare a specific open-source license that can be automatically identified. The README does state that academic users must provide proper attribution to the 2013 paper, which implies a custom license or a permissive license with a citation clause. However, without a clear SPDX identifier, it is difficult to determine if the software can be used in commercial products, if derivative works are allowed, or if there are restrictions on redistribution. This is a red flag for organizations that require clear licensing for compliance. If you are not in academia, you should contact the maintainers or check the website for a license file. This ambiguity could make Alchemist the wrong tool for proprietary projects, where legal clarity is non-negotiable.
Extensibility as a Double-Edged Sword
Alchemist's strength is its extensibility, but this comes at a cost. The documentation follows the DIVIO system, which is excellent for structured learning, but it also implies a steep learning curve. To create a meaningful simulation, you must understand the chemical metaphor and learn how to define custom reactions and environments. This is not a point-and-click tool; it requires programming skills in Kotlin or familiarity with the YAML configuration. The repository layout shows a modular structure, with many submodules (e.g., alchemist-engine, alchemist-incarnation-protelis), which allows you to pick only the parts you need. However, this modularity also means you need to know which modules to include in your build. For a researcher who wants to test a novel algorithm, this flexibility is valuable. For a practitioner who wants a quick simulation of a standard IoT scenario, the overhead might be too high.
Alternative Approaches: Comparing to Agent-Based Simulators
A common alternative to Alchemist is a general-purpose agent-based simulator like NetLogo or MASON. NetLogo uses a simpler, high-level language (Logo) and provides a graphical interface that is easier for beginners. The key difference is that NetLogo models agents as independent entities with rules, whereas Alchemist models interactions as chemical reactions, which can be more natural for certain aggregate behaviors like diffusion or gradient formation. NetLogo is also more mature in terms of documentation and community support, but it is less extensible for large-scale simulations and does not have the same focus on pervasive computing. If your problem involves a large number of devices with spatially distributed interactions, Alchemist's chemical metaphor might be more expressive. If you are prototyping a small-scale agent-based model, NetLogo is faster to pick up. The choice depends on whether you need the reaction-based abstraction or you prefer a more conventional agent-centric approach.
Maintenance and Upgrade Costs
Alchemist is actively maintained, with recent releases including version 43.1.5 on 2026-06-16, just days before the last push. The versioning is frequent, with patches like 43.1.4 and 43.0.56 appearing within weeks, indicating a fast development cycle. This means you can expect regular bug fixes and new features, but it also implies a need to track releases to avoid falling behind. The project uses continuous integration (as indicated by the GitHub Actions badge) and static analysis tools like SonarCloud, which suggests a focus on code quality. However, the upgrade cost is not trivial: you must rebuild your simulations against new versions, and there may be breaking changes in the YAML schema or the API. The documentation is hosted on a separate website, which is the primary source for migration guides, but the README does not provide a changelog or upgrade notes. You should budget time for testing after each release.
Editorial conclusion
Alchemist is for researchers and engineers who need a highly extensible simulator for pervasive and aggregate computing scenarios, especially those in academic settings. It is not for teams that require a turnkey tool with a clear commercial license, since the license is marked NOASSERTION and the academic attribution requirement is explicit. Before adopting, verify the license terms on the official website, check the DIVIO documentation for the specific modules you plan to use, and confirm that the Kotlin-based build system fits your environment. The project is actively maintained with frequent releases, so you can expect ongoing updates, but you must handle the licensing and documentation overhead yourself.
Frequently asked questions
What is the Alchemist simulator used for?
It is a simulator for pervasive, aggregate, and nature-inspired computing, written in Kotlin and organised as a Gradle multi-module project. The behaviour sits in modules for physics, factories, scripting, four agent incarnations and three user interfaces, and the full project information is published on the Alchemist website rather than in the repository README.
How is the Alchemist simulator licensed?
GPLv3.txt and LICENSE.md are both present in the repository, while the single licence field GitHub reports is NOASSERTION. On top of that, the licence obliges anyone using the software for an academic publication to attribute the paper by Pianini, Montagna and Viroli from 2013.
How are Alchemist simulator releases versioned?
By semantic-release configured for conventional commits, with release.config.mjs at the top level and a matching npm development dependency. Recent tags are 43.0.56 on 2026-06-01, 43.1.4 on 2026-06-14 and 43.1.5 on 2026-06-16.
What user interfaces does the Alchemist simulator ship?
Three directories at the top level: alchemist-swingui for a Swing surface, alchemist-composeui for a Compose surface, and alchemist-web-renderer for the browser. The build also carries a kotlin-js-store and a package.json, so the simulation can be hosted outside a JVM desktop application.
Is the Alchemist simulator still being worked on?
The repository is not archived and the last push to the default branch master is dated 2026-09-30. The newest tag, 43.1.5, was published on 2026-06-16, so master carries changes that no release describes yet.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/alchemistsimulator-alchemist)Star history chart for your README
[](https://hysenlabs.com/projects/alchemistsimulator-alchemist)