Skip to main content

Toonic — Universal TOON Format Platform for LLM-optimized file representations

Project description

🎵 Toonic — Universal TOON Format Platform

Python 3.10+ License: Apache-2.0 Tests Version Docker OpenRouter

Token-Oriented Object Notation — kompaktowy format reprezentacji plików zoptymalizowany dla LLM.
Toonic Server dodaje dwukierunkowe strumieniowanie danych między źródłami (kod, logi, kamery RTSP) a modelami LLM z pełną historią wymiany danych.


📑 Spis treści


🚀 Quick Start

# 1. Instalacja
git clone https://github.com/wronai/toonic.git
cd toonic
cp .env.example .env          # ← uzupełnij LLM_API_KEY
make install-all

# 2. Konwersja pliku do TOON
toonic spec ./main.py --format toon

# 3. Start serwera z Web UI
make server
# → http://localhost:8900

# 4. Analiza projektu z LLM
make server-code

# 5. Monitoring kamery RTSP
make server-camera

🏗 Architektura

Sources (watchers)  →  TOON Pipeline  →  Context Accumulator  →  LLM Router  →  Actions
     ↑                                     (token budget)            ↓
     └────────── feedback ←──── History DB ←──── ActionResponse ←── LLM
                                    ↓
                              NLP/SQL Query ← User
Komponent Opis
FileWatcher Monitoruje katalogi, konwertuje pliki do TOON
LogWatcher Tail log files, kategoryzacja ERR/WARN/INFO
StreamWatcher RTSP video, scene detection, keyframe extraction
Accumulator Token budget management per kategoria
LLM Router Routing do odpowiedniego modelu (text/code/multimodal)
History DB SQLite log wszystkich wymian z LLM
NLP/SQL Adapter Przeszukiwanie historii przez zapytania naturalne

→ Pełna dokumentacja: docs/architecture.md

🖥 Toonic Server

# Minimalny start
python -m toonic.server --source file:./src/ --goal "analyze code"

# Multi-source z kamerą
python -m toonic.server \
  --source file:./src/ \
  --source log:./logs/app.log \
  --source rtsp://admin:123456@192.168.188.146:554/h264Preview_01_main \
  --goal "code quality + log anomalies + video monitoring" \
  --interval 30

# Z konfiguracją YAML
python -m toonic.server --config toonic-server.yaml

→ Dokumentacja: docs/server.md

⚡ Trigger System — Event-Driven LLM Dispatch

Zamiast wysyłać dane co N sekund, definiuj kiedy dane mają trafić do LLM:

# NLP: natural language → YAML triggers automatycznie
python -m toonic.server \
  --source "rtsp://admin:123456@192.168.188.146:554/h264Preview_01_main" \
  --goal "describe what you see in each video frame" \
  --when "the object person will be detected for 1 second, if not send frame min. every 1 minute"
# YAML: plik z regułami triggerów
python -m toonic.server \
  --source "rtsp://cam1:554/stream" \
  --triggers examples/video-captioning/triggers.yaml

Wspierane event types:

Event Opis Przykład
motion Ruch w klatce --when "when motion detected"
scene_change Duża zmiana sceny --when "on scene change"
object Obiekt: osoba, samochód --when "person detected for 2s"
pattern Regex w logach --when "error occurs 5 times in 60s"
speech Detekcja mowy --when "speech detected"
anomaly Odchylenie statystyczne threshold z-score

Tryby: periodic (co N s), on_event (na zdarzenie), hybrid (zdarzenie + fallback periodic)

→ Dokumentacja: docs/triggers.md

💻 CLI Shell

python -m toonic.server.client
toonic> status                           # status serwera
toonic> analyze find security issues     # trigger analizy
toonic> add ./new-project/ code          # dodaj źródło
toonic> add rtsp://cam1:554/stream video # dodaj kamerę
toonic> convert ./main.py toon           # konwersja pliku
toonic> history 10                       # ostatnie 10 wymian z LLM
toonic> query "errors from last hour"    # NLP query na historii
toonic> model google/gemini-3-flash-preview  # zmiana modelu

→ Dokumentacja: docs/cli.md

🌐 Web UI

Start: make server → otwórz http://localhost:8900

Panel Funkcja
Live Events Real-time stream eventów z watcherów
LLM Actions Odpowiedzi LLM z akcjami
Sources Dynamiczne dodawanie/usuwanie źródeł
Stats Tokeny, chunks, uptime, LLM calls
History Przeglądanie historii wymian z LLM
Query NLP/SQL wyszukiwanie w metadanych

→ Dokumentacja: docs/web-ui.md

🐳 Docker

# Pełny stack: RTSP test streams + Toonic Server
cd docker/
cp ../.env.example ../.env    # uzupełnij LLM_API_KEY
docker compose up -d

# Tylko test streams (bez serwera)
make docker-streams

# Logi
make docker-logs

Test streams w Docker:

  • rtsp://localhost:8554/test-cam1 — 640×480 test pattern + audio
  • rtsp://localhost:8554/test-cam2 — 320×240 SMPTE bars
  • rtsp://localhost:8554/test-audio — audio-only sine wave

→ Dokumentacja: docs/docker.md

📹 RTSP Cameras

# Real camera
python -m toonic.server \
  --source "rtsp://admin:123456@192.168.188.146:554/h264Preview_01_main" \
  --goal "security monitoring: detect movement" \
  --interval 10

# Multiple cameras
python -m toonic.server \
  --source "rtsp://admin:pass@cam1:554/stream" \
  --source "rtsp://admin:pass@cam2:554/stream" \
  --goal "multi-camera monitoring"

StreamWatcher automatycznie:

  • Łączy się z RTSP przez OpenCV
  • Wykrywa zmiany sceny (scene detection, threshold 0.4)
  • Wysyła keyframes jako base64 JPEG (160×120, Q=10, ~2.5kB)
  • Bez OpenCV → mock mode do testowania pipeline

📜 Conversation History

Każda wymiana z LLM jest zapisywana w SQLite z pełnymi metadanymi:

# Programmatic access
from toonic.server.core.history import ConversationHistory

history = ConversationHistory("./toonic_history.db")
records = history.search(category="video", since="1h")
for r in records:
    print(f"[{r.timestamp}] {r.model}{r.action_type}: {r.content[:100]}")
# CLI
toonic> history 20                      # last 20 exchanges
toonic> history --category video        # only video-related
toonic> history --model gemini          # only gemini model
toonic> history --action code_fix       # only code fixes

→ Dokumentacja: docs/history.md

🔍 NLP/SQL Query

Przeszukuj historię wymian z LLM za pomocą zapytań naturalnych lub SQL:

# NLP queries (przekształcane na SQL przez LLM)
toonic> query "show all errors from the last hour"
toonic> query "which files were fixed today?"
toonic> query "camera events with high confidence"

# Direct SQL
toonic> sql SELECT * FROM exchanges WHERE category='video' ORDER BY timestamp DESC LIMIT 10

→ Dokumentacja: docs/query.md

🔀 LLM Router

Router automatycznie kieruje zapytania do odpowiedniego modelu:

Kategoria Model Routing
code, config, database code model Gemini / Claude
logs, document, data text model Gemini Flash
video, audio multimodal model Gemini / GPT-4o

Konfiguracja w .env:

LLM_API_KEY=sk-or-v1-...
LLM_MODEL=google/gemini-3-flash-preview

Lub w toonic-server.yaml:

models:
  text:
    model: google/gemini-3-flash-preview
  code:
    model: google/gemini-3-flash-preview
  multimodal:
    model: google/gemini-3-flash-preview
    supports: [text, image, audio]

📂 Przykłady

Przykład Opis Start
code-analysis Analiza kodu, wykrywanie bugów make server-code
log-monitoring Real-time monitoring logów make server-logs
video-monitoring RTSP camera monitoring make server-camera
multi-source Kod + logi + RTSP combined make server-multi
video-captioning Video captioning z LLM README
security-audit Audyt bezpieczeństwa kodu README

📡 API Reference

Endpoint Method Opis
/ GET Web UI
/ws WS WebSocket — live events
/api/status GET Server status
/api/actions GET Recent LLM actions
/api/analyze POST Trigger analysis
/api/sources POST Add data source
/api/sources/{id} DELETE Remove source
/api/convert POST Convert file to TOON
/api/formats GET List supported formats
/api/history GET Conversation history
/api/query POST NLP/SQL query on history

→ Pełna dokumentacja: docs/api.md

🧪 Testing

make test            # All tests (160+)
make test-server     # Server tests only
make test-cov        # With coverage report

📖 Dokumentacja

🗺 Roadmap

  • TOON format — 14 file type handlers
  • Pipeline — spec / reproduce / batch
  • Evidence Graph — cross-reference analysis
  • Server — watchers + accumulator + LLM router
  • Web UI — real-time events + stats
  • Docker — RTSP test streams
  • Conversation History — SQLite logging
  • NLP/SQL Query — search history
  • Trigger System — event-driven LLM dispatch (YAML DSL + NLP2YAML)
  • Event Detectors — motion, scene_change, object, pattern, anomaly, speech
  • gRPC transport (Phase 3)
  • MCP Streamable HTTP bridge
  • Rust port (tonic + prost)
  • Audio VAD watcher (webrtcvad)
  • Git diff watcher
  • Plugin marketplace

📄 License

Apache-2.0 — see LICENSE

Created by Tom Saplettatom@sapletta.com

License

Apache License 2.0 - see LICENSE for details.

Author

Created by Tom Sapletta - tom@sapletta.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

toonic-1.0.7.tar.gz (96.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

toonic-1.0.7-py3-none-any.whl (101.3 kB view details)

Uploaded Python 3

File details

Details for the file toonic-1.0.7.tar.gz.

File metadata

  • Download URL: toonic-1.0.7.tar.gz
  • Upload date:
  • Size: 96.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for toonic-1.0.7.tar.gz
Algorithm Hash digest
SHA256 e23b0d7c93837e5f984a77833f95ad5a07c977c62135f97d52f44a7921303df7
MD5 bed540517d4d35fa891807134009f524
BLAKE2b-256 05e5d284699b916cc0ff37353247581429da9aa9cc42fcf2e6c03edf31b7529f

See more details on using hashes here.

File details

Details for the file toonic-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: toonic-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 101.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for toonic-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a38b3a58bfca37b5b1dbdc4ffbfae88ebd24361a916cab421f071a51d632e434
MD5 cb4018a137765fbfd34a463da212dee4
BLAKE2b-256 7dea85377b67e28550157509826610648c89d2bd1dac09bb1912de043d8f554d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page