{"id":48951941,"url":"https://github.com/feuerwehrhackathon2024/2026-09-fugs-ki","last_synced_at":"2026-04-24T03:01:11.387Z","repository":{"id":352055909,"uuid":"1213558603","full_name":"FeuerwehrHackathon2024/2026-09-fugs-ki","owner":"FeuerwehrHackathon2024","description":"Ein KI-gestuetzter Stabsfuehrungsassistenttechnoligedemonstrator fuer den Feuerwehr-Einsatz. Entstanden beim Hackathon2026 der Feuerwehr Muenchen.","archived":false,"fork":false,"pushed_at":"2026-04-21T21:13:02.000Z","size":33267,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T01:03:18.556Z","etag":null,"topics":["agentic-ai","einsatzplanung","feuerwehr","munich"],"latest_commit_sha":null,"homepage":"https://www.ffw-muenchen.de/hackathon2026/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FeuerwehrHackathon2024.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T14:05:51.000Z","updated_at":"2026-04-21T20:59:41.000Z","dependencies_parsed_at":"2026-04-23T02:00:34.794Z","dependency_job_id":null,"html_url":"https://github.com/FeuerwehrHackathon2024/2026-09-fugs-ki","commit_stats":null,"previous_names":["feuerwehrhackathon2024/2026-09-fugs-ki"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/FeuerwehrHackathon2024/2026-09-fugs-ki","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FeuerwehrHackathon2024%2F2026-09-fugs-ki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FeuerwehrHackathon2024%2F2026-09-fugs-ki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FeuerwehrHackathon2024%2F2026-09-fugs-ki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FeuerwehrHackathon2024%2F2026-09-fugs-ki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FeuerwehrHackathon2024","download_url":"https://codeload.github.com/FeuerwehrHackathon2024/2026-09-fugs-ki/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FeuerwehrHackathon2024%2F2026-09-fugs-ki/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32162611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"online","status_checked_at":"2026-04-23T02:00:06.710Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","einsatzplanung","feuerwehr","munich"],"created_at":"2026-04-17T21:01:35.131Z","updated_at":"2026-04-23T02:00:41.555Z","avatar_url":"https://github.com/FeuerwehrHackathon2024.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\n\n\u003c!-- HEADER STYLE: CLASSIC --\u003e\n\u003cdiv align=\"center\"\u003e\n\n# FUGS\u0026KI — Fuehrungsunterstuetzungssystem \u0026 KI\n\n\u003cem\u003eEffizientere Notfallreaktion durch intelligente Automatisierung\u003c/em\u003e\n\n\u003c!-- BADGES --\u003e\n\u003cimg src=\"https://img.shields.io/github/license/MKFeuer/2026-09-fugs-ki?style=flat\u0026logo=opensourceinitiative\u0026logoColor=white\u0026color=0080ff\" alt=\"license\"\u003e\n\u003cimg src=\"https://img.shields.io/github/last-commit/MKFeuer/2026-09-fugs-ki?style=flat\u0026logo=git\u0026logoColor=white\u0026color=0080ff\" alt=\"last-commit\"\u003e\n\u003cimg src=\"https://img.shields.io/github/languages/top/MKFeuer/2026-09-fugs-ki?style=flat\u0026color=0080ff\" alt=\"repo-top-language\"\u003e\n\u003cimg src=\"https://img.shields.io/github/languages/count/MKFeuer/2026-09-fugs-ki?style=flat\u0026color=0080ff\" alt=\"repo-language-count\"\u003e\n\n\u003cem\u003eErstellt mit folgenden Werkzeugen und Technologien:\u003c/em\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/JSON-000000.svg?style=flat\u0026logo=JSON\u0026logoColor=white\" alt=\"JSON\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Markdown-000000.svg?style=flat\u0026logo=Markdown\u0026logoColor=white\" alt=\"Markdown\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/npm-CB3837.svg?style=flat\u0026logo=npm\u0026logoColor=white\" alt=\"npm\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/TOML-9C4121.svg?style=flat\u0026logo=TOML\u0026logoColor=white\" alt=\"TOML\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Leaflet-199900.svg?style=flat\u0026logo=Leaflet\u0026logoColor=white\" alt=\"Leaflet\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Vue.js-4FC08D.svg?style=flat\u0026logo=vuedotjs\u0026logoColor=white\" alt=\"Vue.js\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/React-61DAFB.svg?style=flat\u0026logo=React\u0026logoColor=black\" alt=\"React\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Docker-2496ED.svg?style=flat\u0026logo=Docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://img.shields.io/badge/Python-3776AB.svg?style=flat\u0026logo=Python\u0026logoColor=white\" alt=\"Python\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/TypeScript-3178C6.svg?style=flat\u0026logo=TypeScript\u0026logoColor=white\" alt=\"TypeScript\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/GitHub%20Actions-2088FF.svg?style=flat\u0026logo=GitHub-Actions\u0026logoColor=white\" alt=\"GitHub%20Actions\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Zod-3E67B1.svg?style=flat\u0026logo=Zod\u0026logoColor=white\" alt=\"Zod\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Vite-646CFF.svg?style=flat\u0026logo=Vite\u0026logoColor=white\" alt=\"Vite\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/bat-31369E.svg?style=flat\u0026logo=bat\u0026logoColor=white\" alt=\"bat\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/uv-DE5FE9.svg?style=flat\u0026logo=uv\u0026logoColor=white\" alt=\"uv\"\u003e\n\n\u003c/div\u003e\n\u003cbr\u003e\n\n---\n\nEin KI-gestuetzter Stabsfuehrungsassistenttechnoligedemonstrator fuer den Feuerwehr-Einsatz. Entstanden beim **[Hackathon2026 der Feuerwehr Muenchen](https://www.ffw-muenchen.de/hackathon2026/)**.\n\nFUGS\u0026KI verbindet eine Chat-Oberflaeche mit einem grossen Sprachmodell (LLM) und gibt diesem ueber das [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) Zugriff auf Einsatzdaten, Geodaten, Wetterdaten und Nachrichtenfunktionen — so wird die KI zum Werkzeug fuer die Stabsarbeit.\n\n## Features\n\n- **Chat-Interface** — Streaming-Chat mit waehlbarem LLM (lokal oder remote, OpenAI-kompatibel) und Kartenansicht\n- **Einsatzdaten** — Zugriff auf Einsaetze, Einsatzmittel und Alarmstichworte ueber CIMgate\n- **Nachrichten** — Lesen und Senden von Einsatz-Nachrichten direkt aus dem Chat\n- **Geodaten** — Entfernungsberechnung (WGS-84) und OpenStreetMap-Abfragen (Overpass API)\n- **Wetterdaten** — Aktuelle Temperatur und 12h-Vorhersage vom Deutschen Wetterdienst (DWD)\n\n### Demo\n\n#### Waldbrand Perlacher Forst (agent)\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./media/demo_wildfire_perlacherforst_handover.png\" alt=\"Waldbrand – Übergabe\" style=\"width: 45%; margin: 0.5%; display: inline-block;\"\u003e\n\u003cimg src=\"./media/demo_wildfire_perlacher_forst_Commmandx.png\" alt=\"Waldbrand – CommandX\" style=\"width: 45%; margin: 0.5%; display: inline-block;\"\u003e\n\n\u003c/div\u003e\n\n**Videos:** [▶ CommandX](./media/demo_wildfire_perlacher_forst_Commmandx.mov) · [▶ Übergabe \u0026 Lagebild](./media/demo_wildfire_perlacherforst_handover_comprehension.mov) · [▶ Instagram-Post](./media/demo_wildfire_perlacherforst_instagram.mov) · [▶ Pressemitteilung](./media/demo_wildfire_perlacherforst_instagram_press_statement.mov)\n\n\n#### TUM Einsatz (agentv2)\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./media/tum-einsatz_demo-agent-chat.png\" alt=\"Agent Chat\" style=\"width: 22%; margin: 0.5%; display: inline-block;\"\u003e\n\u003cimg src=\"./media/tum-einsatz_demo-einsatzfahrzeuge.png\" alt=\"Einsatzfahrzeuge\" style=\"width: 22%; margin: 0.5%; display: inline-block;\"\u003e\n\u003cimg src=\"./media/tum-einsatz_demo-routen-planung.png\" alt=\"Routenplanung\" style=\"width: 22%; margin: 0.5%; display: inline-block;\"\u003e\n\u003cimg src=\"./media/tum-einsatz_demo-fullscreen.png\" alt=\"Fullscreen\" style=\"width: 22%; margin: 0.5%; display: inline-block;\"\u003e\n\n\u003c/div\u003e\n\n**Video:** [▶ Hydrants Munich Demo](./media/demo_hydrants_munich.mp4)\n\n\n## Architektur\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./media/architecture_v1.png\" alt=\"Architektur\" style=\"width: 90%;\"\u003e\n\n\u003c/div\u003e\n\n## Externe Repos (erforderlich)\n\nZwei MCP-Dienste werden als separate Git-Repositories eingebunden und müssen\nvor dem ersten Start in das Projektverzeichnis geklont werden:\n\n| Verzeichnis | Repository | Beschreibung |\n|---|---|---|\n| `wetterdienst/` | https://github.com/fschir/WetterdienstMCPServer | DWD-Wetterdaten MCP-Server |\n| `db-timetable/` | https://github.com/jorekai/db-timetable-mcp | Deutsche Bahn Fahrplan MCP-Server |\n\n```bash\n# Im Wurzelverzeichnis dieses Repos:\ngit clone https://github.com/fschir/WetterdienstMCPServer wetterdienst\ngit clone https://github.com/jorekai/db-timetable-mcp db-timetable\n```\n\n\u003e **Hinweis:** `docker compose up --build` schlägt fehl, wenn diese Verzeichnisse fehlen.\n\n## Quick Start\n\n### Mit Docker Compose\n\n```bash\n# Externe Repos klonen (einmalig, siehe oben)\n\n# Konfiguration anlegen\ncp agent/config.example.json agent/config.json\n# config.json bearbeiten: LLM-Endpunkt und API-Keys eintragen\n\n# Fuer CommandX: CIMgate-Zugangsdaten hinterlegen\ncp commandx/.env.example commandx/.env\n# .env bearbeiten\n\n# Fuer DB-Fahrplan: API-Key hinterlegen\ncp db-timetable/.env.example db-timetable/.env\n# .env bearbeiten: DB_API_KEY eintragen\n\n# Stack starten\ndocker compose up --build\n```\n\nDie Anwendung ist dann unter `http://localhost:3001` erreichbar.\n\n### Manuelle Entwicklung\n\nVoraussetzungen: [Bun](https://bun.sh), [uv](https://docs.astral.sh/uv/)\n\n```bash\n# Agent (Frontend + Backend)\ncd agent \u0026\u0026 bun install \u0026\u0026 bun run dev\n\n# Tools-Server\ncd tools \u0026\u0026 uv sync \u0026\u0026 uv run python main.py\n\n# CommandX-Server\ncd commandx \u0026\u0026 uv sync \u0026\u0026 uv run python main.py\n```\n\nAusfuehrliche Entwicklerdokumentation: [`docs/DEV-DOCS.md`](docs/DEV-DOCS.md)\n\n## Contributors\n\nSiehe [contributors.md](contributors.md) fuer die vollstaendige Liste aller Mitwirkenden.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./media/team_fugs_ki.jpeg\" alt=\"Team FUGS\u0026KI\" style=\"width: 90%;\"\u003e\n\n\u003c/div\u003e\n\n## Lizenz\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeuerwehrhackathon2024%2F2026-09-fugs-ki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeuerwehrhackathon2024%2F2026-09-fugs-ki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeuerwehrhackathon2024%2F2026-09-fugs-ki/lists"}