asiai speedometer logo Open source · Apache 2.0 · Zero dependencies

{{ tr("hero_title") }}{{ tr("agent_hero_title") }}

{{ tr("hero_tagline") }}{{ tr("agent_hero_tagline") }}

$pip install asiai
$asiai bench# 15s → your first comparison
Python 3.11+ · stdlib only · 10 engines auto-detected · agent-ready API
GET /api/status ≤ 500ms
{
  "chip": "Apple M4 Pro",
  "ram_gb": 64.0,
  "memory_pressure": "normal",
  "gpu_utilization_percent": 45.2,
  "engines": {
    "ollama": { "running": true, "models_loaded": 2 },
    "lmstudio": { "running": true, "models_loaded": 1 }
  }
}
GET /api/snapshot Full state
{
  "system": {
    "chip": "Apple M4 Pro",
    "gpu_cores": 20,
    "gpu_utilization_percent": 45.2,
    "thermal_state": "nominal"
  },
  "engines": [{
    "name": "ollama",
    "models": [{ "name": "qwen3.5:latest", "size_params": "35B" }]
  }]
}

{{ tr("pain_title") }}

{{ tr("pain_subtitle") }}

01

{{ tr("pain1_title") }}

{{ tr("pain1_desc") }}

02

{{ tr("pain2_title") }}

{{ tr("pain2_desc") }}

03

{{ tr("pain3_title") }}

{{ tr("pain3_desc") }}

{{ tr("surf_title") }}

{{ tr("surf_subtitle") }}

asiai Benchmark screen — one-click Quick Bench with live progress

{{ tr("surf1_t") }}

{{ tr("surf1_d") }}

$ asiai bench
asiai live web dashboard — CPU load, memory, GPU power and loaded models

{{ tr("surf2_t") }}

{{ tr("surf2_d") }}

$ asiai web
asiai fleet cockpit — engines, models, KV cache and power across every Mac on the network

{{ tr("surf3_t") }}

{{ tr("surf3_d") }}

$ asiai fleet

{{ tr("surf4_t") }}

{{ tr("surf4_d") }}

$ asiai leaderboard

{{ tr("uc_title") }}

{{ tr("uc_subtitle") }}

{% for i in range(1, 13) %}
“{{ tr("uc" ~ i ~ "_t") }}”

{{ tr("uc" ~ i ~ "_d") }}

{% endfor %}

{{ tr("how_title") }}

{{ tr("how_subtitle") }}

1

{{ tr("step1") }}

$ brew install druide67/tap/asiai
# or: pip install asiai
2

{{ tr("step2") }}

$ asiai detect
ollama (11434)
lmstudio (1234)
mlx-lm (8080)
→ {{ tr("step2_out") }}
3

{{ tr("step3") }}

$ asiai bench -m qwen3.5
ENGINETOK/STTFT
lmstudio71.242ms
ollama54.861ms
mlx-lm30.138ms

{{ tr("disc_title") }}

{{ tr("disc_subtitle") }}

2.3×

MLX vs llama.cpp

{{ tr("disc1_d") }}

Flat

{{ tr("disc2_t") }}

{{ tr("disc2_d") }}

30 vs 71

{{ tr("disc3_t") }}

{{ tr("disc3_d") }}

{{ tr("eng_title") }}

{{ tr("eng_subtitle") }}

{% set engines = [ ("Ollama", "engines/ollama/", ":11434", "native", ["GGUF"], true), ("LM Studio", "engines/lmstudio/", ":1234", "compat", ["GGUF + MLX"], true), ("mlx-lm", "engines/mlxlm/", ":8080", "compat", ["MLX"], false), ("llama.cpp", "engines/llamacpp/", ":8080", "compat", ["GGUF"], false), ("oMLX", "engines/omlx/", ":8000", "compat", ["MLX"], false), ("vllm-mlx", "engines/vllm-mlx/", ":8000", "compat", ["MLX"], false), ("vMLX", "engines/vmlx/", ":8000", "compat", ["MLX", "Mamba/SSM"], false), ("Rapid-MLX", "engines/rapidmlx/", ":8000", "compat", ["MLX", "Homebrew"], false), ("MTPLX", "engines/mtplx/", "any", "compat", ["MLX", "MTP"], false), ("Exo", "engines/exo/", ":52415", "compat", ["MLX", "Distributed"], false), ] %}

{{ tr("eng_note") }}

{{ tr("met_title") }}

{{ tr("met_subtitle") }}

{% set metrics = [ ("tok/s", "m_toks"), ("TTFT", "m_ttft"), ("Power (W)", "m_power"), ("tok/s/W", "m_eff"), ("Stability", "m_stab"), ("VRAM", "m_vram"), ("Thermal", "m_therm"), ("Context", "m_ctx"), ] %}
{% for label, key in metrics %}

{{ label }}

{{ tr(key) }}

{% endfor %}

{{ tr("lb_title") }}

{{ tr("lb_subtitle") }}

{{ tr("lb_full") }} →
01 llama-3.2-3b-instruct-4bit mlxlm Apple M4 Max · 64 GB 228.0 88 ms
02 qwen3.6:35b-a3b-nvfp4 ollama Apple M5 Max · 128 GB 124.9 39 ms
03 gemma-4-31b-it ollama Apple M5 Max · 128 GB 115.8 64 ms
{{ tr("lb_contribute") }} asiai bench --share

{{ tr("card_title") }}

{{ tr("card_subtitle") }}

asiai bench --card
asiai throughput card — mtplx-qwen36-27b-optimized-speed on mlx-lm at 48.2 tok/s median (±1 CI95, n=5), Apple M5 Max
asiai agentic card — prefix-cache reuse fraction 0.80 across cold, warm and prefix phases, Qwen3.6-27B on llama.cpp asiai code-quality card — tool_call, recovery and thinking suites at 100%, deterministic grading, Qwen3.6-27B on llama.cpp
{% if lang in ("zh", "ja", "ko") %}
{% if lang == "zh" %} 🌍 本页翻译由机器生成,可能不完全准确。欢迎通过 GitHub Issue 提交修正。 {% elif lang == "ja" %} 🌍 このページは機械翻訳です。正確でない場合があります。修正は GitHub Issue でお寄せください。 {% elif lang == "ko" %} 🌍 이 페이지는 기계 번역입니다. 정확하지 않을 수 있습니다. 수정 사항은 GitHub Issue로 제출해 주세요. {% endif %}
{% endif %}