LinkedRun
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_tasksubmit_graphget_tasklisted_taskатcancel_taskretry_tasktest_artefakteget_artefactget_graphget_eventswatch_eventsresource_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_bytesgpu_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 — все это в внешне сторонахня.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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