What is JaKtA?
JaKtA is a framework for programming intelligent agents with the Belief-Desire-Intention (BDI) architecture, built in Kotlin. Agents are plain Kotlin code, so there is no separate agent language to learn and you keep the tools you already love: your IDE, build tool, debugger and libraries.
If you use JaKtA in a research project, please cite it.

Multi Paradigm
Paradigm blending: mix Functional and Object-Oriented programming within your MAS codebase
Multi Platform
Write once, run on the JVM, in JavaScript, and natively on Linux, Windows, macOS and iOS
Configurable
Plug in the knowledge representation and the execution model, from coroutines to simulations
Hello, world!
Agents are written in pure Kotlin: their goals, beliefs and plans are declared with the DSL, and plan bodies are plain suspend Kotlin code.
- The agent starts with the goal
"sayHello", a plain string. - The plan triggered by adding that goal prints a message and stops the node.
- The MAS, one node with one agent, runs on Kotlin coroutines.
Add JaKtA to your Gradle build:
dependencies {
implementation("it.unibo.jakta:jakta-core:<VERSION>")
implementation("it.unibo.jakta:jakta-dsl:<VERSION>")
implementation("it.unibo.jakta:jakta-api:<VERSION>")
}
val helloWorldAgent = agent<String, String, Any> {
embodiedAs { Any() }
hasInitialGoals {
!"sayHello"
}
hasPlanLibrary {
adding.goal {
takeIf { it == "sayHello" }
} triggers {
agent.print("Hello, world!")
node.terminateNode()
}
}
}
fun main(): Unit = runBlocking {
mas(NodeBuilders.baseNode()) {
node { withAgents(helloWorldAgent) }
}.runLocally()
}
Meet the JaKtA team
We are a group of researchers from the University of Bologna, in the Department of Computer Science and Engineering, based in Cesena, Italy
Discover more about what we and our colleagues do on the Pervasive Software Lab website!
Cite JaKtA
Please make sure to cite JaKtA if you use it in a research project!
If you're interested in research developments check out the other publications.
@article{DBLP:journals/sncs/BaiardiBCP24,
author = {Martina Baiardi and Samuele Burattini and Giovanni Ciatto and Danilo Pianini},
title = {Blending {BDI} Agents
with Object-Oriented and Functional Programming with JaKtA},
journal = {{SN} Comput. Sci.},
volume = {5},
number = {8},
pages = {1003},
year = {2024},
url = {https://doi.org/10.1007/s42979-024-03244-y},
doi = {10.1007/S42979-024-03244-Y},
timestamp = {Mon, 03 Mar 2025 22:23:02 +0100},
biburl = {https://dblp.org/rec/journals/sncs/BaiardiBCP24.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
Join the JaKtA community
Be a part of our open-source journey. Collaborate, contribute, and connect with fellow MAS and BDI enthusiasts.
Join on GitHub


