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.

Статус: MVP в активной разработке. Примеры результатов — в reports/: зафиксированные прогоны бенчмарка (JSON + HTML, отчёт открывается в браузере).

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.3.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ironharness-0.3.0-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ironharness-0.3.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.3.0.tar.gz
Algorithm Hash digest
SHA256 4daddfe594184752c915efb4bdfe8a420def1937842b32c3a7b0b9ae2e82cf48
MD5 2c0bdff2038b0b8cb99084879d87a886
BLAKE2b-256 04298a7274f1b15d7faaee67ec7a0753378a29bfec6e90486c4bdb0f1e545d40

See more details on using hashes here.

File details

Details for the file ironharness-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: ironharness-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: Python 3
  • 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b72694919887c34808ca616075ee824910839928d2d1cbc6ec9c4b2b593d75d4
MD5 2e0a353b3716da7fe7b3f5e56b7df317
BLAKE2b-256 b3e598b0ee224f06d015682b1902ac3bc6817df46bd6758ce7d9a96233c07084

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

This release

0.3.0 This release

2 files

0.2.0

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