Skip to content

AAAI-DISIM-UnivAQ/DALI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

280 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DALI - Multi-Agent System Framework

DALI Multi Agent Systems Framework

DALI is a meta interpreter built on top of SICStus Prolog ® (at the moment).

DALI Logo


Overview

DALI is a powerful framework that extends standard logic programming with reactive and proactive capabilities. It allows for the creation of intelligent agents that can:

  • React to external events.
  • Proactively pursue goals.
  • Maintain internal state and memory.
  • Communicate using FIPA-compliant patterns.

Documentation Index

Repository Markdown guides and notes:

General Notes

Unix

Windows

Docker


Prerequisites

DALI requires SICStus Prolog to be installed and activated on your system.

1. Download & Install

Download the SICStus Prolog interpreter from the version offered by the University by contacting Prof. Giovanni De Gasperis at [email protected].

2. License Activation

You must activate SICStus using the site-wide license provided by the University. Follow the installer instructions to enter the license key.


Quick Start

DALI supports native execution on Windows and Unix-like systems, and also provides a Docker-based setup for containerized runs. Choose the method that best fits your environment.

Windows

No complex setup is required. The Windows scripts feature dynamic discovery of SICStus Prolog and streamlined execution.

Warning

SICStus Prolog License & Version Availability
The University has purchased licenses for SICStus Prolog 4.6.0. However, the official SICStus website currently only provides downloads for more recent versions (4.8 to 4.10).
To obtain the installer for the correct version (4.6.0), please contact Prof. Giovanni De Gasperis at [email protected].

  1. Navigate to examples/win/basic.
  2. Double-click startmas.bat.
  3. Descriptive windows for the Server, User agent, and Agents will open automatically.

DALI Windows Startup

Unix (Linux / macOS / WSL2)

DALI leverages tmux for a powerful, tiled interface in Unix environments.

  1. Navigate to examples/unix/advanced.
  2. Run the startup script:
    ./startmas.sh
  3. A tmux session will launch with a tiled layout for all MAS components.

DALI Unix Startup

Docker

For a containerized setup, use the material in examples/docker/.

  1. See Docker Guide for setup, build, and runtime instructions.
  2. See Docker Installer Notes for the required SICStus installer placement.

Testing your MAS

Once the MAS is running, you can test the communication between agents using the User Console (or the Web Dashboard).

  1. In the User Console window (Prolog prompt), identify the target agent:
    agent1.
  2. Identify yourself:
    user.
  3. Send a message (e.g., the go event):
    send_message(go, user).

DALI Message exchange


DALI Web Dashboard

Monitor and interact with your MAS through a modern, Zero-Config web interface. The dashboard automatically discovers agents and provides real-time logs and command input.

Launching the Dashboard

From a Unix-like environment (including WSL2):

cd examples/unix
./run.sh --folder ./advanced

Access the UI at http://localhost:5000.

For more detailed information on available CLI flags and internal functionality, see DASHBOARD.md.

DALI Dashboard Overview

DALI Dashboard Tiled Layout


Repository Structure

The repository is organized to support different levels of complexity and deployment environments:

  • src/: The core DALI engine and meta-interpreter.
  • examples/:
    • win/: Native Windows .bat architectures.
      • basic/: Simple, flat agent structures (perfect for beginners).
      • advanced/: Complex structures using agent types and instances
    • unix/: Advanced tmux and bash architectures.
      • basic/: Simple, flat agent structures (perfect for beginners).
      • advanced/: Complex structures using agent types and instances.
      • ui/: Web dashboard utilities and documentation for Unix-based runs.
    • docker/: Containerized environment for running DALI with Docker.
    • more/: Additional projects, references, and linked examples.
  • img/: Screenshots and visual documentation assets.
  • docs/: Technical documentation and research papers.

Release History

Check the release history page for more information.


Development Setup

To create your own DALI MAS from scratch, use an existing example as a boilerplate:

  1. Create a project folder (e.g., projectFolder).
  2. Copy the core engine — place the DALI/src folder inside your projectFolder.
  3. Initialize your application — create a sub-folder for your DALI app (e.g., DALIappFolder).
  4. Copy a boilerplate — use examples/unix/advanced or examples/unix/basic if on Unix, or examples/win/advanced or examples/win/basic on Windows as a starting point.
  5. Define your agents:
    • Advanced layout: define agent types in mas/types/ and instances in mas/instances/.
    • Basic layout: place all agent .txt files directly in mas/.
  6. Run the startup script — the script will automatically discover your SICStus installation and launch the MAS.

Examples of Applications

  • in Robotics: coordination among store delivery robots:

    Delivery robots cordination

    Video from S. Valentini.

  • F1 Race Simulator: A Formula 1 race simulator where DALI agents control racing cars in a competitive environment.

    F1 Race Simulator - Agents View F1 Race Simulator - Track View

    Video from M. Piccirilli.

References


Contacts

Giovanni De Gasperis
Email: [email protected]

Distributed under the Apache License 2.0. See LICENSE for more information.


Contributing

We welcome contributions!

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/fooBar).
  3. Commit your changes (git commit -am 'Add some fooBar').
  4. Push to the branch (git push origin feature/fooBar).
  5. Create a new Pull Request to our dev branch.

Packages

 
 
 

Contributors

Languages