A quantized on-device LLM fine-tuned for robot action command routing on Android devices.
It runs via Google LiteRT (.litertlm format) directly on mobile hardware — no internet or cloud inference required.
Model Summary
Property
Value
Format
LiteRT LLM (.litertlm)
Quantization
Q8
KV Cache
1024 tokens
Max tokens
512
Temperature
0.1
Top-K
32
Top-P
0.9
Backend
CPU / GPU (Android)
What This Model Does
This model is a robot action router. It takes a natural language instruction and calls the appropriate tool function to produce a structured robot command. It does not generate conversational text — its only job is to map user input to one of the supported robot actions via tool calling.
It is designed as the first stage in a two-model pipeline on Android:
This model — classifies the user's intent and dispatches a robot command via tool call
A chat model (e.g. Gemma) — handles everything else (general questions, conversation)
The smile action is the model's catch-all signal: when the input is not a recognized robot command, the model calls smile() and the host app falls through to the chat model for a conversational response.
Supported Actions
Tool
Action String
Description
moveForward()
FORWARD
Move the robot forward
moveBackward()
BACKWARD
Move the robot backward
turnLeft()
LEFT
Turn left in place
turnRight()
RIGHT
Turn right in place
stop()
STOP
Stop immediately
turnAround()
TURN_AROUND
Rotate 180°
singASong()
SING
Play a melody / sing
smile()
SMILE
Catch-all — not a robot command
System Prompt
You are a robot action controller. You MUST call a tool for every movement request —
never respond with text when movement is requested. Call moveForward for 'move forward',
moveBackward for 'go back', turnLeft for 'turn left', turnRight for 'turn right', stop
for 'stop'. Only skip tool calls for non-movement questions.
How to Use (Android / LiteRT)
1. Load the model
kotlin
1val engine =Engine(2EngineConfig(3 modelPath ="/path/to/mobile-actions-robot_q8_ekv1024.litertlm",4 backend = Backend.GPU,// automatically falls back to CPU5 maxNumTokens =512,6 cacheDir = context.cacheDir.absolutePath,7)8)9engine.initialize()
2. Define your tools
kotlin
1classRobotTools(val onCommand:(String)-> Unit){23@Tool(description ="Move the robot forward at the default speed for a short duration.")4funmoveForward(): Map<String, String>{onCommand("FORWARD");returnmapOf("result"to"success")}56@Tool(description ="Move the robot backward at the default speed for a short duration.")7funmoveBackward(): Map<String, String>{onCommand("BACKWARD");returnmapOf("result"to"success")}89@Tool(description ="Turn the robot left in place for a short duration.")10funturnLeft(): Map<String, String>{onCommand("LEFT");returnmapOf("result"to"success")}1112@Tool(description ="Turn the robot right in place for a short duration.")13funturnRight(): Map<String, String>{onCommand("RIGHT");returnmapOf("result"to"success")}1415@Tool(description ="Stop the robot immediately.")16funstop(): Map<String, String>{onCommand("STOP");returnmapOf("result"to"success")}1718@Tool(description ="Turn the robot 180 degrees to face the opposite direction.")19funturnAround(): Map<String, String>{onCommand("TURN_AROUND");returnmapOf("result"to"success")}2021@Tool(description ="Make the robot sing a song or play a melody.")22funsingASong(): Map<String, String>{onCommand("SING");returnmapOf("result"to"success")}2324@Tool(description ="Make the robot smile or show a happy expression.")25funsmile(): Map<String, String>{onCommand("SMILE");returnmapOf("result"to"success")}26}