Files
lorabot/config.example.toml
2026-05-06 21:56:37 +02:00

63 lines
2.4 KiB
TOML

# Copy this file to `config.toml` and edit. The path can be overridden with
# the LORABOT_CONFIG environment variable. Any field can be overridden with
# environment variables of the form LORABOT_<SECTION>__<KEY>, e.g.
# LORABOT_LLM__BASE_URL=http://llama:8080/v1
# LORABOT_MESHCORE__SERIAL_PORT=/dev/ttyACM0
[logging]
# DEBUG | INFO | WARNING | ERROR | CRITICAL (case-insensitive).
# DEBUG adds per-iteration LLM request logs and Tavily request details.
level = "INFO"
[meshcore]
serial_port = "/dev/ttyUSB0"
baud_rate = 115200
[llm]
base_url = "http://localhost:8080/v1"
api_key = "not-needed"
model = "gemma-4-E4B"
system_prompt = "You are a concise assistant on a low-bandwidth mesh radio. Replies must be brief — under 180 bytes."
temperature = 1.0
request_timeout_seconds = 60
[storage]
sqlite_path = "data/lorabot.db"
[message]
# MeshCore MAX_PACKET_PAYLOAD is 184 bytes. Lower this if your text-frame
# headers further constrain the usable payload on your device.
max_bytes = 184
# Per-attempt ACK wait. 0 = trust the device's path-aware suggestion (recommended).
# Set a positive value only if you need to override that suggestion.
ack_timeout_seconds = 0
# How many times to retry a chunk after failure (0 = no retries). Total attempts
# = send_retries + 1. With send_retries >= 2 the third attempt onwards is sent as
# a flood broadcast (multi-hop) instead of direct.
send_retries = 1
[web]
# Built-in read-only web UI: stored conversations + live status.
enabled = true
host = "127.0.0.1"
port = 8080
[advertise]
# MeshCore companions don't advertise on their own. Lorabot can do it for them
# at a fixed cadence so the node stays visible on the mesh. Set
# interval_seconds = 0 to disable auto-advert (the web UI button still works).
enabled = true
interval_seconds = 3600
at_startup = true
# Flood = multi-hop advert across the mesh. False = zero-hop (neighbors only).
flood = true
# LLM tool calling. The weather tool (Open-Meteo, no key) is always on. Tools
# in this section are optional and only registered when configured. Requires a
# tool-capable model on the LLM server (Llama 3.1, Qwen, Hermes, …); models
# without tool support will simply ignore them.
[tools.tavily]
# Web search + page extraction via https://tavily.com (free tier available).
# Leave empty to disable both web_search and fetch_url tools.
api_key = ""