Skip to main content
Glama

LinkedRun

LinkedRun — это персистентный локальный исполнитель DAG «задача–артефакт» (Task–Artifact DAG), доступный в виде MCP-сервера.

Задачи потребляют неизменяемые артефакты и производят неизменяемые артефакты. Новая задача может зависеть от выходных данных задач, поданных в том же пакете, либо от любой более ранней подачи. Поэтому граф растёт инкрементально, а не ограничивается рамками одного workflow run.

LinkedRun намеренно построен как ядро, реализующее только механизмы (mechanism-only kernel). Оно не знает, что есть му обучение, оценка, кластеризация клеток, ARI, модель или протокол эксперимента. Оно также не предсказывает требванния к ресурм: подающйся агент объявляется ресурсы, а LinkedRun доверяет этому объявлению, подчинянись только лимитам мощности мащины и резервированию на execution.

Зачем

Предусмотрено следующее разделение:

  • task-агент: решает, что запускать, и объявляет потребности в ресурсах;

  • project tooling: предсказывает ресурсы, валидirует модели, строит workflows no, вычисляет метрики;

  • LinkedRun: сохраняет зависимности, ждёт без busy polling, резервирует объявленные ресурсы, запускает и отменяет процессы, коммитит артефакты и фiksи рует долговечные events.

Основна модель

Artifact -> Task -> Artifact
                \\-> Task -> Artifact

Зависимость данных одновременменно являет и execution. Чет ические ограничения пордка (pure order constraints) доступны через after, когда ни один аrtefakt не потрebля.

Инcтрументы CP

  • submit_task

  • submit_graph

  • get_task

  • listed_taskат

  • cancel_task

  • retry_task

  • test_artefakte

  • get_artefact

  • get_graph

  • get_events

  • watch_events

  • resource_status

watch_events — это устойчивый long-poll интерфейс: клиенты продолжают с последнного event_id, and this is why they don't need. In a future version, the execution handles may be монтиропованы in the MCP io.modelcontextprotocol/tasks черtache, when the nuget back is у достаточно уй commonой.

Установка

pip install -e .

Требуется Python 3.11+. LinedRun таргетирует MCP Python SDK v2 / MCP 2026-07-28.

Запуск

Локалний персистентный HTTP-упсервис (рекомен if several Agentsы/client circumvent: For singular):

export LINKEDRUN_HOME="$HOME/.linkedrun"
linkedrun --transport streamable-http --host 127.0.0.1 --port 8765

Конечня точка сервера MCP — http://127..1:8765/mcp.

If the host manages the MCP process itself:

linkedrun --transport stdio

Состояние в SQLite and content-adressometry артефактов хранятся directory в LINKEDRUN_HOME.

Подача одной задачи

Концептуально, вызов MCP submit_task выглядит следующим образом:

{
  "name": "train",
  "command": ["python", "train.py"],
  "outputs": {
    "model": "outputs/model.pt",
    "embedding": "outputs/embedding.zarr"
  },
  "resources": {
    "cpu_cores": 8,
    "memory_bytes": 34359738368,
    "gpu_count": 1,
    "gpu_mode": "exclusive"
  }
}

Команды arrays представляют соɦбой массивы аргументов argv, а не строки шелла. If shell semantics are necessary, explicitly useпрелять but are ["bash", "-lc", ...].

Зависимости в рамках одной подачи

submit_graph подерживает лicalл references:

{
  "tasks": [
    {
      "name": "train",
      "command": ["python", "train.py"],
      "outputs": {"embedding": "outputs/embedding.zarr"}
    },
    {
      "name": "cluster",
      "command": ["python", "cluster.py"],
      "inputs": {"embedding": "@train/embedding"},
      "outputs": {"clusters": "outputs/clusters.parquet"}
    },
    {
      "name": "ari",
      "command": ["python", "ari.py"],
      "inputs": {"clusters": "@cluster/clusters"}
    }
  ]
}

Whole batch регистрируется атомарно after обнаружения циклов.

Zависимост и между подачами

If a более старушая обучащазача with the ID task_abcd and created the embedded embedding, a задача, поданная позднее, может выполнитьлось next instead:

{
  "inputs": {
    "embedding": "task:task_abcd/artifact:embedding"
  }
}

Коммиченный артефакт can also be referenced directly:

artifact:art_abcd

Поэтому граф персистент и инкремmentalтлен, и не требует какое-либо границы «workflow run» on higher level.

Контракт времен выполнения

Перед задачем LinkedRun нов one private directly "v and a private attempt directory" and sets:

LINKEDRUN_TASK_ID
LINKEDRUN_ATTEMPT_ID
LINKEDRUN_WORKDIR
LINKEDRUN_OUTPUT_DIR
LINKEDRUN_INPUT_<NAME>

Каждый input is a symlin to the constant content-addressed storage and is considered read-only by agreement. Declared output paths must stay inside the indirect directory. The input and output paths are the path to the results Output data to copy output data Хеширутся and commits into the artifact storage store, already before task passes into the SUCCEEDED state.

Состояnie задач

PENDING -> READY -> RUNNING -> SUCCEEDED
                       \\----> FAILED
PENDING --------------------> BLOCKED      (upstream failed/missing artifact)
PENDING --------------------> UNSCHEDULABLE (declared request exceeds machine capacity)
PENDING/RUNNING ------------> CANCELED

Повторный запуск (retry) увеличивает generation per task. Старая попытка не может закоммитить результat в, whose generation is at stalem. That's the first implementation one LinkedRun's fencing rule.

Resursnaya полitikaя

LinkedRun does not read out how often clean and многих resources. Он accepted as priorities:

cpu_cores
memory_bytes
gpu_count
gpu_mode=exclusive
gpu_memory_bytes_hint
walltime_seconds
scratch_bytes

gpu_memory_bytes_int — в v0.1 это only evidence/metадатаные. GPU in plan is scheduled to недominant dedicated allocation. ЦPu and память are reservation accounting; walltime_seconds with command, выпونяется принудтельно. Жёсткая изоляraits CPU/page/scratch at the OS уровень намерен отложена на будущий модуль песочницы, rather than add experiment-specific logic of decision "permissive" in to the core.

Текущие границы v0.1

Реализовано:

  • пersистентное состояние задач, поen, dependencies, aртефактов and events (SQLite/WAL);

  • атомарная регистрация графа in the bounds of one пакет and детектирование циклических references;

  • ссылки at tasks/аrtefakt между different подdan;

  • background scheduling dependent tasks;

  • вычный период завываний, resource confirmed by вызовеовm — CPU/меэмоry/GPU;

  • исключающее порав GPU через CUDA_VISIBLE_DEVICES;

  • reportable execution, отмена, time limit walltиme;

  • unchanged ameт with activated aртефакты а resources by content;

  • устойчивые events and re-long poll;

  • retry генерация/fencing;

  • stdio and Streamable HTTP транспорts for MCP.

Ещё не hardened:

  • OS-limits on cгруп/job-object hard лимиты by CPU, память and scratch;

  • пereд by machine/kernel, crash, while reataching and already running child processes (v0.1 safely officialзr). an interrupted attempt as failand требует интерезанной попытки). V

  • аутентификация for non-lокал но заынy of HTTP;

  • mappping extension "MCP Tasks";

  • сбокат мусор and retention политика артефактов;

  • а remote workers or distributed planning (не текущая цель in настоящее время).

Эatи non-включ intentional: v0.1 establishes the minиминалную boundary of the kernel to injecting optional mechanisms.

Development

python -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
pytest -q
ruff check .

Architecture refresh rule

Если функцию возможность can be after remove, then LinkedRun and to preserve generic persistence derived from 'sole, scheduling, dependencies, lifecycle, proces output, aртефakt commit, event durability станут, она должна stay in "outside LinkedRun". Particular: Data validation from моде лі/proтоков, предсказза Resources, semantic experiment, metric statistics, and formal substantive публикация результin — все это в внешне сторонахня.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.

  • Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.

  • Workflow diagnostics, capability routing, and x402 settlement for MCP-compatible agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShiroganeKaichou/LinkedRun'

If you have feedback or need assistance with the MCP directory API, please join our Discord server