delimitter/synoema-iot-micro-360m-v1
047
synoema-iot-micro-360m-v1
Synoema IoT Rules model — fine-tuned for generating Synoema IoT automation rules that compile and run on bare-metal MCUs, ESP32, STM32, and Linux edge devices.
Synoema is a formally verified, BPE-aligned functional language for LLM-generated software. GBNF grammar + Hindley-Milner types + contracts eliminate the verification gap — prompt to native / WASM / IoT with no human review. 🌐 synoema.tech · 📦 GitHub · 📖 Language Reference
Model Description
Ultra-compact IoT model (360M parameters). Smallest footprint, sub-300 MB GGUF. Ideal for wearables and ultra-low-power devices.
This model generates Synoema IoT rules — compact functional programs that:
- Compile to WASM artifacts (mean size ~82–292 bytes)
- Run on Tier 0 bare-MCU (wasm3), Tier 1 ESP32/STM32, and Tier 2 Linux edge
- Express automation logic with formal
requires/ensurescontracts - Support verticals: Home, Industrial, Wearable, Automotive, Agriculture
Evaluation Results
Threshold: ≥80/104 (≥76.9%) — PASSED ✅
GGUF (llama.cpp / Ollama)
File: synoema-iot-micro-360m-v1-q4km.gguf (259 MB, Q4KM)
# Ollama
ollama run delimitter/synoema-iot-micro-360m-v1
# llama.cpp
./llama-cli -m synoema-iot-micro-360m-v1-q4km.gguf \
--system-prompt "You are a Synoema IoT rules expert. Generate only valid Synoema IoT rule code." \
-p "activate the pump if humidity falls under 35"Usage (Python / transformers)
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
base = "HuggingFaceTB/SmolLM2-360M-Instruct"
adapter = "delimitter/synoema-iot-micro-360m-v1"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, adapter)
SYS = "You are a Synoema IoT rules expert. Generate only valid Synoema rule code. No explanation."
prompt = tok.apply_chat_template([
{"role": "system", "content": SYS},
{"role": "user", "content": "activate the fan if temperature exceeds 30"},
], tokenize=False, add_generation_prompt=True)
inp = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inp, max_new_tokens=128, do_sample=False)
print(tok.decode(out[0][inp["input_ids"].shape[1]:], skip_special_tokens=True))Training Details
Synoema IoT Rule Example
rule_fan_control temp prev =
? temp > 30 -> 1 : ? temp < 25 -> 0 : prev
main = rule_fan_control 35 0License
Apache 2.0. Base model license applies separately. See synoema.tech for full terms.
