CoolFace
Modelpublic

delimitter/synoema-iot-micro-360m-v1

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes47downloads
Model Card

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/ensures contracts
  • —Support verticals: Home, Industrial, Wearable, Automotive, Agriculture

Evaluation Results

Splitcompile_passTotalPass Rate
Val set9010486.5%
Test set (unseen)11512790.6%

Threshold: ≥80/104 (≥76.9%) — PASSED ✅

GGUF (llama.cpp / Ollama)

File: synoema-iot-micro-360m-v1-q4km.gguf (259 MB, Q4KM)

bash
# 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)

python
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

ParameterValue
Language version0.1.0-beta.1
Training corpuscorpus_iot_rules_train.jsonl (946 examples, Wave-2)
MethodQLoRA (LoRA r=16, α=32)
Base modelHuggingFaceTB/SmolLM2-360M-Instruct
Epochs3
Batch size4 (eff.)

Synoema IoT Rule Example

synoema
rule_fan_control temp prev =
  ? temp > 30 -> 1 : ? temp < 25 -> 0 : prev

main = rule_fan_control 35 0

License

Apache 2.0. Base model license applies separately. See synoema.tech for full terms.