Discrete-event simulation and developer workbench for low-altitude autonomous systems
Project description
AeroAgentSim
AeroAgentSim is a discrete-event simulation toolkit and developer workbench for low-altitude autonomous systems. It is designed for developers who need to configure workflows, run algorithmic experiments, inspect execution chains, and verify runtime behavior through trajectories, logs, and spatial snapshots.
The current repository, workbench, and source distribution use AeroAgentSim and aeroagentsim. Existing code can continue to import airfogsim, and the citation section below points to the JOSS paper published under the original AirFogSim title.
Overview
- Recommended developer install path:
pip install -e .[dev] - Recommended Python import:
from aeroagentsim import Environment - Current workbench pages:
Overview,Class Catalog,Workflow Studio,Run Console,Trajectories & Logs - Runtime outputs are stored under
runtime/aeroagentsim/ - Custom
agent/task/workflowdefinitions are file-backed underregistry/aeroagentsim/ - Builtin workbench workflows are aligned with runnable inspection, charging, logistics, and image-processing flows
Developer Workbench
The AeroAgentSim workbench is built for configuration, validation, execution, and runtime verification:
Overview: current config version, recent run, and validation statusClass Catalog: builtin and custom metadata plus compatibility lookupWorkflow Studio: table/form editing with a workflow-agent-state relation graphRun Console: start, pause, resume, reset, live logs, critical path, and live 2D mapTrajectories & Logs: run history, trajectory replay, and structured log inspection
The visualization layer is intentionally lightweight and developer-oriented:
- Leaflet-based 2D spatial views
simulation_planemode withCRS.Simplegeo_osmmode with geographic coordinates- live markers with workflow, task, status, and recent log context
- stored 2D trajectories rendered as polylines
Workflow Studio uses forms and tables as the persisted source of truth. The relation graph is an interactive inspection canvas with auto layout, wheel or trackpad zoom inside the canvas, background drag-to-pan, and node drag refinement for local layout adjustment.
The workbench also provides:
- global
zh-CN/en-USUI switching - page-local
Validatefor the active draft inWorkflow Studio - centralized
Review / Validatechecks for draft consistency and runtime readiness - merged browsing across builtin and custom definitions
- structured log and trajectory inspection by
run_id
Registry And Runtime
Custom definitions are stored as files:
registry/aeroagentsim/agents/registry/aeroagentsim/tasks/registry/aeroagentsim/workflows/
Runtime state is separated cleanly from configuration snapshots:
- config snapshots:
runtime/aeroagentsim/configs/ - run directories:
runtime/aeroagentsim/runs/<run_id>/ - typical run subdirectories:
logs/,workflow_states/,trajectories/,spatial/,metrics/
Run start performs runtime preflight. Compatibility findings such as skipped default create_airspace or create_frequency injection remain warning entries. Only preflight errors block POST /api/runs.
Developer Configuration
These environment variables are the main public knobs for local development and automation:
- Backend storage:
AEROAGENTSIM_RUNTIME_DIRAEROAGENTSIM_REGISTRY_DIRAEROAGENTSIM_DB_PATHAEROAGENTSIM_LOG_LEVEL
- Compatibility aliases accepted by the backend:
AIRFOGSIM_RUNTIME_DIRAIRFOGSIM_REGISTRY_DIRAIRFOGSIM_DB_PATHAIRFOGSIM_LOG_LEVEL
- Frontend endpoints:
REACT_APP_API_BASE_URLREACT_APP_WS_BASE_URLREACT_APP_ENABLE_MOCK_FALLBACK
- Example-specific integrations:
OPENWEATHERMAP_API_KEYfor weather-backed examplesSUMO_HOMEfor SUMO traffic workflows
Installation
For the current repository and workbench, use a source install:
python -m venv aeroagentsim_env
source aeroagentsim_env/bin/activate
pip install -e .[dev]
If you also want documentation tooling:
pip install -e ".[dev,docs]"
Verify the package
python -c "import aeroagentsim, airfogsim; from aeroagentsim import Environment; from airfogsim import Environment as LegacyEnvironment; print(Environment.__name__, Environment is LegacyEnvironment)"
Quick Example
from aeroagentsim import Environment
from aeroagentsim.agent import DroneAgent
from aeroagentsim.component import ChargingComponent, MoveToComponent
from aeroagentsim.workflow.inspection import create_inspection_workflow
env = Environment()
drone = env.create_agent(
DroneAgent,
"drone1",
properties={
"position": [10, 10, 0],
"battery_level": 100,
},
)
drone.add_component(MoveToComponent(env, drone))
drone.add_component(ChargingComponent(env, drone))
workflow = create_inspection_workflow(
env,
drone,
[
(10, 10, 50),
(100, 40, 80),
(180, 120, 60),
(10, 10, 0),
],
)
workflow.start()
env.run(until=600)
Start The Workbench
python main_for_visualization.py --backend-port 8002 --frontend-port 3000
API Surface
The current workbench API exposes these main groups:
GET /api/catalog/agents|components|tasks|workflowsGET /api/catalog/compatibilityGET/POST /api/registry/{kind}GET/PUT/DELETE /api/registry/{kind}/{definition_id}POST /api/registry/{kind}/{definition_id}/validateGET/PUT /api/configs/{config_id}GET/POST /api/configs/{config_id}/graphPOST /api/configs/{config_id}/preflightPOST /api/configs/{config_id}/validateGET /api/healthPOST /api/runtime/resetGET /api/runsPOST /api/runsPOST /api/runs/{run_id}/pause|resume|resetDELETE /api/runs/{run_id}GET /api/runs/{run_id}/status|logs|trajectories|spatial
Documentation
Citation
If you use AeroAgentSim in research, cite the JOSS paper:
- JOSS page: https://joss.theoj.org/papers/10.21105/joss.08267
- PDF: https://www.theoj.org/joss-papers/joss.08267/10.21105.joss.08267.pdf
@article{Wei2025,
doi = {10.21105/joss.08267},
url = {https://doi.org/10.21105/joss.08267},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {111},
pages = {8267},
author = {Wei, Zhiwei and Li, Bing and Zhang, Rongqing},
title = {AirFogSim: A Python Package for Benchmarking Collaborative Intelligence in Low-Altitude Vehicular Fog Computing},
journal = {Journal of Open Source Software}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aeroagentsim-1.1.1.tar.gz.
File metadata
- Download URL: aeroagentsim-1.1.1.tar.gz
- Upload date:
- Size: 303.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
721d3006b84fad2f11652c819c4468debd38d25717608f170b8de44b1fa416c1
|
|
| MD5 |
6a140d96b20340571e4d96bd8f3978b9
|
|
| BLAKE2b-256 |
9765f92eba8b1b31bd255ce56e8d6c43447b0a5e3c8393d2773bfce4a63d06c3
|
File details
Details for the file aeroagentsim-1.1.1-py3-none-any.whl.
File metadata
- Download URL: aeroagentsim-1.1.1-py3-none-any.whl
- Upload date:
- Size: 391.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71e5c20f7a87bf88f00c55fba360cca3ea71b9b44f6e8cce8f52c3b7ad05559
|
|
| MD5 |
1702a2a1f98ffa913787f0df11cc35a5
|
|
| BLAKE2b-256 |
82ee5db3e059c3c1527773b2d016b18498d0397329f434e7a6f15e6c3e93ee10
|