Union Command v10 · Test guide
Say it in English or Hinglish. Get a function call your agent can run.
Union Command v10 is a small offline model that turns one spoken or typed command into a structured action with typed arguments, for laptops and Raspberry Pi. This page shows what it does, how to download and test it, and how it scored.
critical action by default. Use a test machine and read each plan before you run it.How it fits in an agent
It covers 371 actions across 17 categories. Every prediction includes a confidence score, the top-3 alternatives and schema validation errors, so an agent can execute, ask the user (clarify) or hand the text to a larger LLM (unknown or low confidence).
{"action": "set_timer", "args": {"amount": 5, "unit": "min"}, "confidence": 0.9998,
"alternatives": [...], "validation_errors": [], "latency_ms": 6.1}
Uses, with examples in ENGLISH and HINGLISH
Offline voice assistant for a laptop or home
ENGLISH “set the volume to 40”
set_volume {"value": 40}
HINGLISH “volume 40 kar do”
set_volume {"value": 40}
Raspberry Pi GPIO / I2C by voice or chat
ENGLISH “read the value of physical pin 11”
gpio_read {"numbering": "board", "pin": 11}
HINGLISH “physical pin 11 ki value padho”
gpio_read {"numbering": "board", "pin": 11}
Device diagnostics chat-ops
ENGLISH “what is the pi temperature”
get_temperature {}
HINGLISH “pi ka temperature batao”
get_temperature {}
Cheap first-stage router for an LLM agent
ENGLISH “list docker containers”
docker_list {}
HINGLISH “docker containers list karo”
docker_list {}
Hands-free desktop and accessibility
ENGLISH “open notepad”
open_app {"app": "notepad"}
HINGLISH “notepad kholo”
open_app {"app": "notepad"}
Edge DevOps
ENGLISH “restart the nginx service”
service_restart {"service": "nginx"}
HINGLISH “nginx service restart karo”
service_restart {"service": "nginx"}
Credentials copied verbatim
ENGLISH “connect to wifi Redmi Note 12 password hello@123”
connect_wifi {"password": "hello@123", "ssid": "Redmi Note 12"}
HINGLISH “Redmi Note 12 wifi se connect karo password hello@123”
connect_wifi {"password": "hello@123", "ssid": "Redmi Note 12"}
Negated requests
ENGLISH “don't shut down the laptop”
cancel_shutdown {}
HINGLISH “shutdown mat karo”
cancel_shutdown {}
Categories, sample commands, outputs and executor tools
One intent per category: all ENGLISH commands first, then the same commands in HINGLISH. Model output is the real v10 prediction. Executor tool is what the sample executor would run on each platform; the bracket shows whether that adapter was ready on the test machine. Result appears only for read-only commands that were actually executed.
| Category | Language | Sample command | Model output | Executor tool: Windows 11 | Executor tool: Raspberry Pi 5 | Default gate | Result |
|---|---|---|---|---|---|---|---|
| Audio & media | ENGLISH | set the volume to 40 | set_volume {"value": 40} | Python adapter executors/windows.py: Set master volume to an exact percent [needs pycaw] | Python adapter executors/common.py: Set master volume to an exact percent [needs pactl] | allowed | plan only (not executed in this demo) |
| Display & appearance | ENGLISH | lower the brightness a little | brightness_down {} | PowerShell: $b=Get-CimInstance -Namespace root/WMI -ClassName WmiMonitorBrightness… [ready] | Python adapter executors/common.py: Decrease brightness (default step 10) [needs brightnessctl] | allowed | plan only (not executed in this demo) |
| Network & connectivity | ENGLISH | how strong is the wifi signal | get_wifi_signal {} | netsh.exe wlan show interfaces [ready] | nmcli device wifi list [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| GPIO & I2C | ENGLISH | set gpio 17 high | gpio_on {"pin": 17} | Python adapter executors/common.py: Set a GPIO pin HIGH (e.g. relay / LED on) [Pi only] | pinctrl set 17 op dh [ready] | blocked | blocked by default gate |
| Hardware & Raspberry Pi | ENGLISH | what is the pi temperature | get_temperature {} | PowerShell: $t=Get-CimInstance -Namespace root/wmi -ClassName MSAcpi_ThermalZoneTe… [ready] | vcgencmd measure_temp [ready] | allowed | Windows: failed: needs administrator rights; Pi: temp=43.9'C |
| Files & storage | ENGLISH | create file "notes/todo.txt" | create_file {"path": "notes/todo.txt"} | Python adapter tinyagent/executor.py: Create a new empty file; existing files are never overwritt… [ready] | Python adapter tinyagent/executor.py: Create a new empty file; existing files are never overwritt… [ready] | allowed | plan only (not executed in this demo) |
| Apps & windows | ENGLISH | open notepad | open_app {"app": "notepad"} | Python adapter executors/desktop.py: Open / launch an application [needs pywinauto] | Python adapter executors/desktop.py: Open / launch an application [ready] | allowed | plan only (not executed in this demo) |
| Browser & web | ENGLISH | search youtube for lofi music | youtube_search {"query": "lofi music"} | Python adapter executors/desktop.py: Search / play something on YouTube [ready] | Python adapter executors/desktop.py: Search / play something on YouTube [ready] | allowed | plan only (not executed in this demo) |
| Keyboard & clipboard | ENGLISH | select all | select_all {} | Python adapter executors/desktop.py: Send ctrl+a to the selected target window [needs pywinauto] | Python adapter executors/desktop.py: Send ctrl+a to the selected target window [needs wmctrl] | allowed | plan only (not executed in this demo) |
| Timers & productivity | ENGLISH | set a timer for 5 minutes | set_timer {"amount": 5, "unit": "min"} | Python adapter tinyagent/executor.py: Start a timer in this local server process [ready] | Python adapter tinyagent/executor.py: Start a timer in this local server process [ready] | allowed | plan only (not executed in this demo) |
| Security & accounts | ENGLISH | show the firewall status | firewall_status {} | PowerShell: Get-NetFirewallProfile | Select-Object Name,Enabled | ConvertTo-Json [ready] | Python adapter executors/common.py: show firewall status [needs ufw] | allowed | Windows: completed (output not published: local device details) |
| Services & processes | ENGLISH | show the status of the ssh service | service_status {"service": "ssh"} | PowerShell: Get-Service -Name $a.service | Select-Object Name,Status,DisplayName |… [ready] | systemctl status --no-pager -- ssh [ready] | allowed | Windows: failed: no such service on this OS |
| Software & development | ENGLISH | list docker containers | docker_list {} | docker.EXE ps -a [ready] | docker ps -a [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| AI & models | ENGLISH | which models are available in ollama | list_llm_models {} | ollama.EXE list [ready] | ollama list [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| Terminal & sessions | ENGLISH | show tmux sessions | list_sessions {} | Python adapter executors/common.py: List sessions [Pi only] | Python adapter executors/common.py: List sessions [needs tmux] | allowed | plan only (not executed in this demo) |
| System & power | ENGLISH | what is the cpu usage | get_cpu_usage {} | Python adapter tinyagent/executor.py: Measure CPU use over 200 milliseconds [ready] | Python adapter tinyagent/executor.py: Measure CPU use over 200 milliseconds [ready] | allowed | Windows: CPU 7.5 %; Pi: CPU 0.0 % |
| Help & intent handling | ENGLISH | what can you do | help {} | Python adapter tinyagent/executor.py: Show action and adapter coverage [ready] | Python adapter tinyagent/executor.py: Show action and adapter coverage [ready] | allowed | Windows: 371 actions, 221 live adapters here; Pi: 371 actions, 251 live adapters here |
| Audio & media | HINGLISH | volume 40 kar do | set_volume {"value": 40} | Python adapter executors/windows.py: Set master volume to an exact percent [needs pycaw] | Python adapter executors/common.py: Set master volume to an exact percent [needs pactl] | allowed | plan only (not executed in this demo) |
| Display & appearance | HINGLISH | brightness thoda kam karo | brightness_down {} | PowerShell: $b=Get-CimInstance -Namespace root/WMI -ClassName WmiMonitorBrightness… [ready] | Python adapter executors/common.py: Decrease brightness (default step 10) [needs brightnessctl] | allowed | plan only (not executed in this demo) |
| Network & connectivity | HINGLISH | wifi ka signal kitna strong hai | get_wifi_signal {} | netsh.exe wlan show interfaces [ready] | nmcli device wifi list [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| GPIO & I2C | HINGLISH | gpio 17 ko high karo | gpio_on {"pin": 17} | Python adapter executors/common.py: Set a GPIO pin HIGH (e.g. relay / LED on) [Pi only] | pinctrl set 17 op dh [ready] | blocked | blocked by default gate |
| Hardware & Raspberry Pi | HINGLISH | pi ka temperature batao | get_temperature {} | PowerShell: $t=Get-CimInstance -Namespace root/wmi -ClassName MSAcpi_ThermalZoneTe… [ready] | vcgencmd measure_temp [ready] | allowed | Windows: failed: needs administrator rights; Pi: temp=43.3'C |
| Files & storage | HINGLISH | file "notes/todo.txt" bana do | create_file {"path": "notes/todo.txt"} | Python adapter tinyagent/executor.py: Create a new empty file; existing files are never overwritt… [ready] | Python adapter tinyagent/executor.py: Create a new empty file; existing files are never overwritt… [ready] | allowed | plan only (not executed in this demo) |
| Apps & windows | HINGLISH | notepad kholo | open_app {"app": "notepad"} | Python adapter executors/desktop.py: Open / launch an application [needs pywinauto] | Python adapter executors/desktop.py: Open / launch an application [ready] | allowed | plan only (not executed in this demo) |
| Browser & web | HINGLISH | youtube pe lofi music search karo | youtube_search {"query": "lofi music"} | Python adapter executors/desktop.py: Search / play something on YouTube [ready] | Python adapter executors/desktop.py: Search / play something on YouTube [ready] | allowed | plan only (not executed in this demo) |
| Keyboard & clipboard | HINGLISH | sab select karo | select_all {} | Python adapter executors/desktop.py: Send ctrl+a to the selected target window [needs pywinauto] | Python adapter executors/desktop.py: Send ctrl+a to the selected target window [needs wmctrl] | allowed | plan only (not executed in this demo) |
| Timers & productivity | HINGLISH | 5 minute ka timer lagao | set_timer {"amount": 5, "unit": "min"} | Python adapter tinyagent/executor.py: Start a timer in this local server process [ready] | Python adapter tinyagent/executor.py: Start a timer in this local server process [ready] | allowed | plan only (not executed in this demo) |
| Security & accounts | HINGLISH | firewall ka status batao | firewall_status {} | PowerShell: Get-NetFirewallProfile | Select-Object Name,Enabled | ConvertTo-Json [ready] | Python adapter executors/common.py: show firewall status [needs ufw] | allowed | Windows: completed (output not published: local device details) |
| Services & processes | HINGLISH | ssh service ka status dikhao | service_status {"service": "ssh"} | PowerShell: Get-Service -Name $a.service | Select-Object Name,Status,DisplayName |… [ready] | systemctl status --no-pager -- ssh [ready] | allowed | Windows: failed: no such service on this OS |
| Software & development | HINGLISH | docker containers list karo | docker_list {} | docker.EXE ps -a [ready] | docker ps -a [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| AI & models | HINGLISH | ollama pe kaunse models hain | list_llm_models {} | ollama.EXE list [ready] | ollama list [ready] | allowed | Windows: completed (output not published: local device details); Pi: completed (output not published: local device details) |
| Terminal & sessions | HINGLISH | tmux sessions dikhao | list_sessions {} | Python adapter executors/common.py: List sessions [Pi only] | Python adapter executors/common.py: List sessions [needs tmux] | allowed | plan only (not executed in this demo) |
| System & power | HINGLISH | cpu usage batao | get_cpu_usage {} | Python adapter tinyagent/executor.py: Measure CPU use over 200 milliseconds [ready] | Python adapter tinyagent/executor.py: Measure CPU use over 200 milliseconds [ready] | allowed | Windows: CPU 6.7 %; Pi: CPU 3.7 % |
| Help & intent handling | HINGLISH | tum kya kya kar sakte ho | help {} | Python adapter tinyagent/executor.py: Show action and adapter coverage [ready] | Python adapter tinyagent/executor.py: Show action and adapter coverage [ready] | allowed | Windows: 371 actions, 221 live adapters here; Pi: 371 actions, 251 live adapters here |
All 72 example commands, 36 intents in ENGLISH and HINGLISH (69 exactly right)
| Category | Language | Command | Model output | Confidence | Correct |
|---|---|---|---|---|---|
| Audio & media | ENGLISH | set the volume to 40 | set_volume {"value": 40} | 100% | ✓ |
| Audio & media | ENGLISH | pause the music | media_pause {} | 100% | ✓ |
| Display & appearance | ENGLISH | lower the brightness a little | brightness_down {} | 100% | ✓ |
| Display & appearance | ENGLISH | turn on dark mode | dark_mode_on {} | 100% | ✓ |
| Network & connectivity | ENGLISH | how strong is the wifi signal | get_wifi_signal {} | 100% | ✓ |
| Network & connectivity | ENGLISH | connect to wifi Redmi Note 12 password hello@123 | connect_wifi {"password": "hello@123", "ssid": "Redmi Note 12"} | 100% | ✓ |
| GPIO & I2C | ENGLISH | set gpio 17 high | gpio_on {"pin": 17} | 100% | ✓ |
| GPIO & I2C | ENGLISH | read the value of physical pin 11 | gpio_read {"numbering": "board", "pin": 11} | 100% | ✓ |
| GPIO & I2C | ENGLISH | scan the i2c bus | i2c_scan {} | 100% | ✓ |
| Hardware & Raspberry Pi | ENGLISH | what is the pi temperature | get_temperature {} | 100% | ✓ |
| Hardware & Raspberry Pi | ENGLISH | what is the fan speed | get_fan_speed {} | 100% | ✓ |
| Files & storage | ENGLISH | create file "notes/todo.txt" | create_file {"path": "notes/todo.txt"} | 100% | ✓ |
| Files & storage | ENGLISH | how much disk space is left | get_disk_space {} | 100% | ✓ |
| Apps & windows | ENGLISH | open notepad | open_app {"app": "notepad"} | 100% | ✓ |
| Apps & windows | ENGLISH | minimize this window | minimize_window {} | 100% | ✓ |
| Browser & web | ENGLISH | search youtube for lofi music | youtube_search {"query": "lofi music"} | 100% | ✓ |
| Browser & web | ENGLISH | login to github username dev_user password Test@123 | web_login {"password": "Test@123", "site": "github", "username": "dev_user"} | 100% | ✓ |
| Keyboard & clipboard | ENGLISH | select all | select_all {} | 100% | ✓ |
| Keyboard & clipboard | ENGLISH | show clipboard history | clipboard_history {} | 100% | ✓ |
| Timers & productivity | ENGLISH | set a timer for 5 minutes | set_timer {"amount": 5, "unit": "min"} | 100% | ✓ |
| Timers & productivity | ENGLISH | calculate 12 + 8 | calculate {"expression": "12 + 8"} | 100% | ✓ |
| Security & accounts | ENGLISH | show the firewall status | firewall_status {} | 100% | ✓ |
| Security & accounts | ENGLISH | allow port 8080 in the firewall | firewall_allow {"port": 8080} | 100% | ✓ |
| Services & processes | ENGLISH | show the status of the ssh service | service_status {"service": "ssh"} | 100% | ✓ |
| Services & processes | ENGLISH | restart the nginx service | service_restart {"service": "nginx"} | 100% | ✓ |
| Software & development | ENGLISH | list docker containers | docker_list {} | 100% | ✓ |
| Software & development | ENGLISH | install the numpy python package | install_python_package {"name": "numpy"} | 100% | ✓ |
| AI & models | ENGLISH | which models are available in ollama | list_llm_models {} | 100% | ✓ |
| AI & models | ENGLISH | run the llama3 model | run_llm {"model": "llama3"} | 100% | ✓ |
| Terminal & sessions | ENGLISH | show tmux sessions | list_sessions {} | 100% | ✓ |
| Terminal & sessions | ENGLISH | run command "ls -la" | run_command {"command": "command \"ls -la"} | 100% | ✗ (see note) |
| System & power | ENGLISH | what is the cpu usage | get_cpu_usage {} | 100% | ✓ |
| System & power | ENGLISH | shut down in 10 minutes | shutdown {"amount": 10, "unit": "min"} | 100% | ✓ |
| System & power | ENGLISH | don't shut down the laptop | cancel_shutdown {} | 100% | ✓ |
| Help & intent handling | ENGLISH | what can you do | help {} | 99% | ✓ |
| Help & intent handling | ENGLISH | turn it off | clarify {} | 100% | ✓ |
| Audio & media | HINGLISH | volume 40 kar do | set_volume {"value": 40} | 100% | ✓ |
| Audio & media | HINGLISH | gaana pause karo | media_pause {} | 100% | ✓ |
| Display & appearance | HINGLISH | brightness thoda kam karo | brightness_down {} | 100% | ✓ |
| Display & appearance | HINGLISH | dark mode on kar do | dark_mode_on {} | 100% | ✓ |
| Network & connectivity | HINGLISH | wifi ka signal kitna strong hai | get_wifi_signal {} | 100% | ✓ |
| Network & connectivity | HINGLISH | Redmi Note 12 wifi se connect karo password hello@123 | connect_wifi {"password": "hello@123", "ssid": "Redmi Note 12"} | 100% | ✓ |
| GPIO & I2C | HINGLISH | gpio 17 ko high karo | gpio_on {"pin": 17} | 100% | ✓ |
| GPIO & I2C | HINGLISH | physical pin 11 ki value padho | gpio_read {"numbering": "board", "pin": 11} | 100% | ✓ |
| GPIO & I2C | HINGLISH | i2c bus scan karo | i2c_scan {} | 100% | ✓ |
| Hardware & Raspberry Pi | HINGLISH | pi ka temperature batao | get_temperature {} | 82% | ✓ |
| Hardware & Raspberry Pi | HINGLISH | fan speed kitni hai | get_fan_speed {} | 100% | ✓ |
| Files & storage | HINGLISH | file "notes/todo.txt" bana do | create_file {"path": "notes/todo.txt"} | 100% | ✓ |
| Files & storage | HINGLISH | disk space kitna bacha hai | get_disk_space {} | 100% | ✓ |
| Apps & windows | HINGLISH | notepad kholo | open_app {"app": "notepad"} | 100% | ✓ |
| Apps & windows | HINGLISH | is window ko minimize karo | minimize_window {} | 100% | ✓ |
| Browser & web | HINGLISH | youtube pe lofi music search karo | youtube_search {"query": "lofi music"} | 100% | ✓ |
| Browser & web | HINGLISH | github pe login karo username dev_user password Test@123 | web_login {"password": "Test@123", "site": "github", "username": "dev_user"} | 100% | ✓ |
| Keyboard & clipboard | HINGLISH | sab select karo | select_all {} | 100% | ✓ |
| Keyboard & clipboard | HINGLISH | clipboard history dikhao | clipboard_history {} | 100% | ✓ |
| Timers & productivity | HINGLISH | 5 minute ka timer lagao | set_timer {"amount": 5, "unit": "min"} | 100% | ✓ |
| Timers & productivity | HINGLISH | 12 + 8 calculate karo | calculate {"expression": "12 + 8"} | 100% | ✓ |
| Security & accounts | HINGLISH | firewall ka status batao | firewall_status {} | 100% | ✓ |
| Security & accounts | HINGLISH | firewall mein port 8080 allow karo | firewall_allow {"port": 8080} | 100% | ✓ |
| Services & processes | HINGLISH | ssh service ka status dikhao | service_status {"service": "ssh"} | 100% | ✓ |
| Services & processes | HINGLISH | nginx service restart karo | service_restart {"service": "nginx"} | 100% | ✓ |
| Software & development | HINGLISH | docker containers list karo | docker_list {} | 100% | ✓ |
| Software & development | HINGLISH | numpy python package install karo | install_python_package {"name": "numpy"} | 100% | ✓ |
| AI & models | HINGLISH | ollama pe kaunse models hain | list_llm_models {} | 100% | ✓ |
| AI & models | HINGLISH | llama3 model chalao | run_llm {"model": "llama3"} | 100% | ✓ |
| Terminal & sessions | HINGLISH | tmux sessions dikhao | list_sessions {} | 100% | ✓ |
| Terminal & sessions | HINGLISH | command "ls -la" chalao | run_command {"command": "command \"ls -la"} | 100% | ✗ (see note) |
| System & power | HINGLISH | cpu usage batao | get_cpu_usage {} | 100% | ✓ |
| System & power | HINGLISH | 10 min baad shutdown kar dena | shutdown {"amount": 10, "unit": "min"} | 100% | ✓ |
| System & power | HINGLISH | shutdown mat karo | cancel_shutdown {} | 100% | ✓ |
| Help & intent handling | HINGLISH | tum kya kya kar sakte ho | help {} | 100% | ✓ |
| Help & intent handling | HINGLISH | ise band kar do | close_window {} | 100% | ✗ (see note) |
- ENGLISH
run command "ls -la"gaverun_command {"command": "command \"ls -la"}; expectedrun_command {"command": "ls -la"}. - HINGLISH
command "ls -la" chalaogaverun_command {"command": "command \"ls -la"}; expectedrun_command {"command": "ls -la"}. - HINGLISH
ise band kar dogaveclose_window {}; expectedclarify {}.
Test results
Metric: exact match. The action and every typed argument must equal the label; errors stay in the denominator. Same checkpoint on both devices (SHA-256 c91d44e4a687152c…).
Accuracy
| Dataset | Rows | Laptop CPU exact | Laptop action-only | Raspberry Pi 5 exact | Pi action-only | About the set |
|---|---|---|---|---|---|---|
| Held-out test (unseen templates) | 24,498 | 94.87% (23,241) | 96.05% | 94.87% (23,241) | 96.05% | 24,498 rows · all 371 actions · template families never seen in training |
| Practical dev (A) | 1,321 | 96.44% (1,274) | 96.90% | 96.44% (1,274) | 96.90% | 1,321 realistic phrasings · used during development |
| Golden dev (B) | 383 | 97.39% (373) | 97.91% | 97.39% (373) | 97.91% | 383 hand-checked commands · used during development |
The held-out test split contains whole template families never used for training and was evaluated once for this release. Earlier development results on the same checkpoint: Grouped dev (reserved template groups) 96.50%, Validation 98.22%.
By language (held-out test)
| Language | Rows | Exact | Action-only |
|---|---|---|---|
| HINGLISH (Roman script, incl. a small Devanagari slice) | 9,958 | 95.43% | 96.37% |
| ENGLISH | 8,038 | 92.56% | 94.31% |
| Unlabelled (project A rows, mostly English/Hinglish) | 4,884 | 98.73% | 99.45% |
| Code-mixed | 1,618 | 91.22% | 92.46% |
By category (held-out test)
| Category | Rows | Exact | Action-only |
|---|---|---|---|
| Hardware & Raspberry Pi | 1,122 | 98.93% | 98.93% |
| Terminal & sessions | 410 | 98.78% | 98.78% |
| Display & appearance | 1,972 | 98.48% | 98.53% |
| Audio & media | 1,653 | 98.12% | 98.31% |
| Browser & web | 1,527 | 97.84% | 99.61% |
| System & power | 3,085 | 97.50% | 98.64% |
| Security & accounts | 714 | 96.78% | 96.78% |
| Keyboard & clipboard | 883 | 96.60% | 97.28% |
| Files & storage | 2,793 | 95.31% | 96.89% |
| Help & intent handling | 762 | 95.14% | 96.19% |
| Apps & windows | 1,468 | 94.96% | 96.66% |
| Services & processes | 1,088 | 93.57% | 94.76% |
| Software & development | 926 | 92.33% | 92.44% |
| Network & connectivity | 2,951 | 91.70% | 92.82% |
| Timers & productivity | 747 | 90.63% | 93.71% |
| GPIO & I2C | 2,133 | 87.48% | 88.70% |
| AI & models | 264 | 80.68% | 97.73% |
Speed
| Device | Threads | Median | p95 | Single commands/s | Batched commands/s | Model load | RAM |
|---|---|---|---|---|---|---|---|
| Laptop i7-1360P | 1 | 7.4 ms | 9.9 ms | 131 | 141 | 5.3 s | 650 MB |
| Laptop i7-1360P | 2 | 5.9 ms | 9.4 ms | 157 | 249 | 5.3 s | 650 MB |
| Laptop i7-1360P | 4 | 7.2 ms | 11.3 ms | 128 | 237 | 5.3 s | 650 MB |
| Raspberry Pi 5 | 1 | 32.8 ms | 40.8 ms | 30 | 91 | 8.3 s | 533 MB |
| Raspberry Pi 5 | 2 | 40.4 ms | 47.6 ms | 24 | 88 | 8.3 s | 533 MB |
| Raspberry Pi 5 | 4 | 36.2 ms | 44.0 ms | 27 | 100 | 8.3 s | 533 MB |
| Device | Seconds (held-out test) | Commands/s | Threads | Batch |
|---|---|---|---|---|
| Laptop i7-1360P | 95.86 | 255.5 | 4 | 64 |
| Raspberry Pi 5 | 331.81 | 73.8 | 2 | 64 |
Temperature
| Device | Run | Sensor | Start | Max | Mean | Pi throttle flags after run |
|---|---|---|---|---|---|---|
| Laptop i7-1360P | Accuracy run (26k rows, 4 threads) | Windows ACPI thermal zone (typeperf, Thermal Zone Information) | 60.9 °C | 95.9 °C | 85.3 °C | n/a (not a Pi) |
| Laptop i7-1360P | Latency benchmark (1/2/4 threads) | Windows ACPI thermal zone (typeperf, Thermal Zone Information) | 53.9 °C | 85.9 °C | 71.2 °C | n/a (not a Pi) |
| Raspberry Pi 5 | Accuracy run | sysfs cpu-thermal (Raspberry Pi SoC sensor) | 51.8 °C | 73.2 °C | 68.2 °C | throttled=0x0 |
| Raspberry Pi 5 | Latency benchmark | sysfs cpu-thermal (Raspberry Pi SoC sensor) | 41.9 °C | 65.5 °C | 56.5 °C | throttled=0x0 |
Raspberry Pi 5 notes. The first attempt ran the held-out test in one go with 4 threads. After 202 s and 15,040 commands the SoC reached about 85 °C with the fan near 9,900 RPM, and the Pi dropped off the network until it was power-cycled. The reported Pi results come from a second, gentler run: 2 threads, the held-out test split into five chunks of 5,000 rows, and a cool-down below 65 °C before each chunk. Temperature, the 5 V rail, throttle flags and fan speed were logged every 5 seconds (test_results/rpi5/sensors.log). That run finished with throttle flags at 0x0 throughout, a peak of 73.2 °C and a 5 V rail between 5.05 V and 5.20 V. The Pi made exactly the same predictions as the laptop: the same 1,314 commands were wrong on both devices across the three sets. On the Pi, 1 thread gives the lowest single-command latency; extra threads mainly help batched throughput. For long jobs on a Pi 5, use 1 or 2 threads, keep the active cooler and a 5 V / 5 A supply, and watch `vcgencmd measure_temp` and `vcgencmd get_throttled`.
Test devices
| Device | CPU | OS | Python / PyTorch |
|---|---|---|---|
| Laptop | 13th Gen Intel(R) Core(TM) i7-1360P | Windows-11-10.0.26200-SP0 | Python 3.13.14 / torch 2.12.0+cpu |
| Raspberry Pi 5 | Raspberry Pi 5 Model B Rev 1.1 (Arm Cortex-A76, 4 cores) | Linux-6.12.47+rpt-rpi-2712-aarch64-with-glibc2.41 | Python 3.13.5 / torch 2.8.0+cpu |
Download and test
1 · Get the code and model
git clone https://github.com/sraivante/tiny-agentic-home-robotic-for-edge-device-v10.git
cd tiny-agentic-home-robotic-for-edge-device-v10
python download_model.py
The downloader fetches the 96.2 MB model from Hugging Face and verifies its SHA-256.
2 · Install (Python 3.11–3.13, CPU)
python -m venv .venv
# Windows: .venv\Scripts\activate
# Pi/Linux: . .venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt3 · Parse commands (no execution)
python quickstart.py
python quickstart.py "turn off the wifi" "wifi band karo"
python quickstart.py --json "set a timer for 5 minutes"4 · Reproduce the tests
python scripts/evaluate.py --data examples/sample_commands.jsonl
python scripts/benchmark.py --threads 1,2,45 · Sample executor lab (optional)
run.bat # Windows
bash run.sh # Linux / Raspberry Pi
# opens http://127.0.0.1:8770
Local only, token-protected, file actions confined to runtime/files/. Critical actions need --allow-risk critical.
Python API
from tinyagent.runtime import Predictor
m = Predictor("models/a100_minilm_v10_quoted/best.pt", threads=2)
print(m.predict("set the volume to 40"))
print(m.predict("volume 40 kar do"))Limitations
- Synthetic training data with no real speech-to-text output; test with your own ASR transcripts.
- Small Devanagari coverage; English and Roman-script Hinglish dominate.
- One command per utterance; it parses, it does not plan.
- Weakest spots: near-duplicate GPIO/I2C actions, a few near-synonyms and some free-text argument boundaries.
- The model never refuses; always keep a validator and risk gate in front of an executor.