Investment Access Request - L-Operator
L-Operator is available exclusively to qualified investors under NDA. Access is restricted to investment evaluation purposes only.
By requesting access, you acknowledge that this model is proprietary technology subject to NDA restrictions. You agree to use this model solely for investment evaluation purposes and maintain strict confidentiality of all technical details, training methodologies, and performance characteristics. Unauthorized use, reproduction, or distribution is strictly prohibited.
Log in or Sign Up to review the conditions and access this model content.
L-Operator-Instruct — Android Text Control Model
Model Summary
L-Operator-Instruct is a text-only instruction-tuned model for Android control. It is fine-tuned from LiquidAI/LFM2.5-1.2B-Instruct (Liquid Foundation Model 2.5) using:
- Android control episodes — Step-level trajectories (text-only actions) from
Tonic/android-operator-episodes. - Mobile Actions — Function-calling style examples from
google/mobile-actions.
It is designed to work alongside a vision model: the vision model handles screen interactions that need x/y coordinates (tap, click, long press); this model handles high-level, text-describable actions (open app, type, swipe, go back, press home/back, wait).
| Attribute | Value |
|---|---|
| Base model | LiquidAI/LFM2.5-1.2B-Instruct |
| Architecture | Causal LM (text-only) |
| Training | LoRA (Unsloth); optional merge to full weights |
| Training data | Tonic/android-operator-text-full (merged dataset) |
| Language | English (instructions and outputs) |
Intended Use
- In scope: Predicting the next high-level action (as JSON) given a goal and step instruction, for use in an Android automation or control pipeline where a separate vision model handles coordinate-based actions.
- Out of scope: Replacing the vision model; handling raw pixels or x/y coordinates; guaranteeing safety or correctness of executed actions.
Supported Actions (Output Format)
The model outputs a single JSON object per turn for Android control, with one of these action types:
| Action | Description | Example JSON |
|---|---|---|
open_app |
Open an app | {"action_type":"open_app","app_name":"Settings"} |
type |
Enter text | {"action_type":"type","text":"hello"} |
swipe |
Swipe direction | {"action_type":"swipe","direction":"up"} |
go_back |
Navigate back | {"action_type":"go_back"} |
press_home |
Home button | {"action_type":"press_home"} |
press_back |
Back button | {"action_type":"press_back"} |
wait |
Wait for UI | {"action_type":"wait"} |
Coordinate-based actions (click, tap, long_press) are not produced by this model; they are delegated to the vision model.
How to Use
Requirements
pip install transformers torch
# or: pip install unsloth # if you need to continue fine-tuning
Load and run (example)
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Tonic/l-operator-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
device_map="auto",
)
# Example: one user turn
system_msg = (
"You are an Android control assistant (Text Mode). You work alongside a vision-enabled "
"partner model that handles screen interactions requiring visual coordinates. "
"Your role is to handle high-level actions: opening apps, typing text, swiping, "
"navigating back, or waiting. Respond with a JSON action. "
"Valid action_types: open_app, type, swipe, go_back, press_home, press_back, wait."
)
user_msg = (
"Goal: Set an alarm for 7 AM.\n"
"Step: Open the Clock app.\n\n"
"Provide the appropriate high-level action (no x/y coordinates needed). "
"Valid actions: open_app, type, swipe, go_back, press_home, press_back, wait."
)
messages = [
{"role": "system", "content": system_msg},
{"role": "user", "content": user_msg},
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
response = tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(response) # e.g. {"action_type":"open_app","app_name":"Clock"}
Chat template
The model uses the same chat template as the base LFM2.5-Instruct model. Use apply_chat_template with add_generation_prompt=True so the model generates the assistant reply.
Training Details
- Script:
train/sft-lfm2.5.py(Unsloth + LoRA). - Dataset:
Tonic/android-operator-text-full(ShareGPT/conversation format). - Typical hyperparameters: 1–3 epochs, LoRA rank 16, eval split 0.2, batch size 2 × gradient accumulation 4, max sequence length 2048.
- Hardware: Single GPU (e.g. A10G); training can be run via Hugging Face Jobs using the end-to-end chunked pipeline.
Pipeline (dataset build + training):
uv run run_end_to_end_chunked.py \
--hf-username Tonic \
--base-repo android-operator-text-full \
--model-repo l-operator-instruct \
--chunk-size 45 \
--num-epochs 1 \
--training-flavor a10g-large
Limitations and Bias
- Text-only: No vision; cannot interpret screens or choose tap coordinates. Use with a dedicated vision model for tap/click/long_press.
- English-only: Training data is in English; behavior in other languages is undefined.
- No safety layer: Outputs are not filtered for safety or appropriateness; the deploying system is responsible for validation and safe execution.
- Domain: Tuned for Android control and mobile-actions style tasks; may be less reliable for unrelated instruction-following.
License
- Base model: LiquidAI/LFM2.5-1.2B-Instruct — check the base model card for license terms (e.g. LFM Open License).
- Fine-tuning: This adapter/merged model follows the same license as the base model unless otherwise stated.
- Training data: See the dataset card for Tonic/android-operator-text-full and the licenses of its sources (android-operator-episodes, google/mobile-actions).
Citation
If you use this model, please cite:
- Liquid AI LFM2.5: LiquidAI/LFM2.5-1.2B-Instruct
- Training data: Tonic/android-operator-text-full (see dataset card for source citations)
- Training code: train_android_models (chunked pipeline +
train/sft-lfm2.5.py)
Model Card Metadata (optional for Hub)
language:
- en
license: other
tags:
- android
- instruction-tuning
- lora
- text-only
- mobile-control
base_model: LiquidAI/LFM2.5-1.2B-Instruct
datasets:
- Tonic/android-operator-text-full
Model tree for Tonic/l-operator-instruct
Base model
LiquidAI/LFM2.5-1.2B-Base