LAB-102AgentsOngoingUpdated 2026

EV Terminal — A Local AI Agent on Android

A small Android agent that loads Qwen3.5-0.8B only when a task needs model intelligence, routes deterministic work through explicit tools, and releases model resources when the task ends. It runs without an Ollama server or an always-on cloud backend.

Open source repository

Hypothesis

A small on-device model can still be useful when the harness owns routing, tool execution, and task lifecycle instead of asking the model to do every operation itself.

Test Setup & Hardware Specification

Evaluation RigAndroid device; first model setup downloads approximately 563 MB
Environment ParametersAndroid application using llama.cpp with a downloadable Qwen3.5-0.8B GGUF model. The model package is kept in private app storage and is loaded per task.

Methodology & Execution

Trace a request from ChatFragment through AgentRunner and ModelSupervisor, route allowed operations through ToolRegistry, record runtime events in Console, then unload the model after completion.

Observations

The repository separates language understanding from operations that need deterministic behavior. Math, time, weather, web, mail, and location are exposed as explicit tools, while Console records model load, tool success, memory restoration, and task completion events.

Known Limitations

The first setup needs network access, some tools depend on network or device permissions, and the repository still needs a real device demo recording. The project is an active student project, not a general-purpose assistant benchmark.

Reproduction Script

Execute this command in your local environment using the Cheva test harness:

reproduce_experiment.shbash
1JAVA_HOME=/usr/lib/jvm/java-17-temurin-jdk ./gradlew testDebugUnitTest assembleDebug --no-daemon

Full Research Report

EV Terminal — A Local AI Agent on Android

The project

EV Terminal is a small Android agent built around a deliberately narrow split of responsibility:

  • the model handles language understanding and synthesis;
  • the harness decides when a tool is needed;
  • deterministic tools perform operations that should be correct;
  • the runtime records what happened and releases model resources after the task.

The app runs Qwen3.5-0.8B locally through llama.cpp. It does not require an Ollama server, a permanent cloud connection, or a model that stays loaded in memory all the time.

Why it is interesting

The interesting experiment is not “how smart is a 0.8B model?” It is whether a small model becomes useful when the surrounding system gives it a clear job.

The request path is:

snippet.txttext
1ChatFragment
2 -> AgentRunner
3 -> ModelSupervisor
4 -> Qwen3.5-0.8B / llama.cpp
5 -> ToolRegistry
6 -> math, time, weather, web, mail, location

For a tool task, EV routes the request, executes the allowed tool, feeds the result back to the model, and records the lifecycle in Console. This keeps model output away from operations that benefit from deterministic code.

The lifecycle

The model is downloaded separately from the APK. On first setup, the app resumes and verifies a roughly 563 MB model package before storing it in private app storage.

During a task, the runtime can:

  1. load the local model;
  2. understand the request and choose an allowed route;
  3. run a deterministic tool when one is required;
  4. synthesize the result for Chat;
  5. unload the model and restore memory for the next task.

This is a useful pattern for local agents: model intelligence is treated as a task-scoped resource, not a permanently running service.

Tools in the repository

  • Math: expressions, derivatives, antiderivatives, definite integrals, and limits
  • Time: date, time, and timezone information
  • Weather: network-backed weather lookup
  • Web: network-backed search
  • Mail: mailbox access
  • Location: device location access

The calculus path also renders successful results as LaTeX locally through KaTeX.

A real test request

The repository gives a concrete end-to-end example:

snippet.txttext
1Chat: differentiate x^2 sin(x)
2Console: MODEL LOAD -> MATH SUCCESS -> MODEL UNLOAD
3Chat: 2x sin(x) + x^2 cos(x)
4Console: RAM RESTORED -> TASK COMPLETE

The important observation is the boundary. The model can translate a natural request into a tool operation, but the calculus engine owns the derivative and the runtime makes the lifecycle visible.

Reproduce the project checks

From the repository root:

snippet.shbash
1JAVA_HOME=/usr/lib/jvm/java-17-temurin-jdk ./gradlew testDebugUnitTest assembleDebug --no-daemon

The debug APK is generated under app/build/outputs/apk/debug/.

Limits of this note

The first model download still needs network access. Weather and web depend on network availability, while mail and location depend on device access. The repository also calls out the next missing proof point: a real 15–20 second device recording showing one complete local-agent task.

This is a project note, not a performance ranking. The useful question is whether the architecture makes local AI more practical for the work you want to do.

Related Experiments

LAB-103
2026Ongoing

TamaBench — Small Models, Long Horizons

A lightweight benchmark that puts a small or local model in a persistent virtual-pet sandbox. The agent must plan across three simulated days, use structured tools, manage money and supplies, and recover when delayed consequences go wrong.

Hypothesis: A focused automation harness can extract more useful autonomy from a small model by reducing unnecessary wake-ups, tool calls, tokens, and compute without changing the model itself.
Category: AgentsCredit: Pichetpong Muangsiri
LAB-101
2026In Review

Local LLM Inference Under Limited VRAM — MoE vs Dense vs RAM Offloading

Exploratory study of Mixture-of-Experts, dense models, and RAM offloading on an NVIDIA RTX 3060 12 GB + 16 GB DDR4. Tests whether sparse MoE can use system RAM as a capacity tier: Gemma 4 26B-A4B stays interactive (12–19 tok/s at 16K), while the dense Mistral Small 3.1 24B collapses to 3.35 tok/s and Qwen-AgentWorld 35B-A3B reaches double digits only with high latency and memory pressure.

Hypothesis: A sparse MoE with low active parameters can use system RAM as a model-capacity tier more effectively than a dense architecture under GPU/RAM hybrid inference, so total parameter count alone does not predict throughput.
Category: Models