Skip to main content

ironharness

harness — «упряжь»: впрягаем LLM-агентов в железо.

Агентский харнесс для I/O и прошивок. Два модуля:

  • io-core — безопасный I/O-слой для агентов: транспорты (serial, Modbus TCP, MQTT, файловая песочница), симулятор Modbus, инструменты прошивки ESP32 (esptool: разбор образа офлайн, flash/erase на живой плате), JSONL-журнал всех операций, реплеер, лимиты (rate-limit, дедлайны), верификация эффектов (expect_read), MCP-сервер (19 инструментов).
  • ironbench — бенчмарк для firmware-агентов: золотые задачи в симуляторах (Wokwi ESP32/MicroPython, далее Renode), агентский цикл поверх LLM API, отчёты pass@k.

Быстрый старт

uv sync                              # зависимости (+ сам проект editable)
uv run pytest                        # тесты (без железа: loop:// и симуляторы)
uv run ruff check .                  # линтер
uv run ironharness-mcp               # MCP-сервер (stdio; или: python -m io_core.mcp_server)

Инструменты агента (MCP)

echo · serial_open/write/read/read_line · modbus_open/read/write · mqtt_open/publish/subscribe/read · esp_image_info/flash/erase · file_write/read/list/delete

Все операции автоматически пишутся в JSONL-журнал ($IRONHARNESS_HOME/journal.jsonl, по умолчанию ~/.ironharness/); файловые операции изолированы песочницей ($IRONHARNESS_SANDBOX, по умолчанию ~/.ironharness/sandbox).

Подключение внешнего агента

Любой MCP-совместимый агент (Claude Code, Codex, Cursor, OpenCode…) получает все инструменты io-core одной записью в конфиг — свой цикл агент приносит с собой, ironharness даёт «руки»: транспорты, песочницу, журнал, верификацию.

{
  "mcpServers": {
    "ironharness": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ironharness", "ironharness-mcp"]
    }
  }
}

После публикации пакета на PyPI то же самое одной строкой: "command": "uvx", "args": ["ironharness-mcp"].

Для испытаний на ненадёжных линиях есть io_core.faults.FaultyTransport — сценарные сбои (обрыв, задержка, порча и потеря байтов) поверх любого транспорта, и io_core.mqtt_sim.MqttSimBroker — мини-брокер MQTT (подмножество) для офлайн-прогонов.

ironbench — бенчмарк firmware-агентов

uv run ironbench list                              # каталог золотых задач
uv run ironbench run --all                         # эталонные прогоны (нужен WOKWI_CLI_TOKEN)
uv run ironbench solve --task blink --attempts 3   # LLM-агент решает задачу
uv run ironbench report                            # pass@k: report.json + report.html

Задачи — ESP32/MicroPython в Wokwi (headless wokwi-cli), Renode, MicroPython unix-port (бесплатные локальные прогоны) и plant-мишень (замкнутая петля «объект + регулятор» в Python, оценка по метрикам переходной характеристики: p-regulator, pid-antiwindup, system-id). У каждой задачи класс (io/data/protocol/fsm/control/resilience) и уровень 1–5; ironbench report показывает профиль модели по классам, а не одно число. LLM-конфиг — переменные окружения: LLM_BASE_URL (по умолчанию локальный LM Studio), LLM_MODEL, LLM_API_KEY, LLM_TIMEOUT.

Статус: этапы 0–2 завершены (17 золотых задач на 4 мишенях, агентский цикл, таксономия, отчёты pass@k + профиль по классам), далее — этап 3 (реальное железо, плата заказана). План — PLAN.md (локально).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ironharness-0.2.0.tar.gz (2.2 MB view details)

Uploaded Source

File details

Details for the file ironharness-0.2.0.tar.gz.

File metadata

  • Download URL: ironharness-0.2.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ironharness-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9356580f60e239a77793d13357ac7c1b1486e728ff487bc9c3e7e1a722e509b1
MD5 b3eb4595ad6584c543dcce2aaed62b88
BLAKE2b-256 7f6b38cb98bda5240f1a4a8eb0e6a3eb4a305c6ac6a5b8a37201123fde5b7fa4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.3

2 files

0.4.2

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page