Skip to main content
Glama

LinkedRun

LinkedRun은 MCP 서버로 노출되는 영구 로컬 태스크–아티팩트 DAG 실행기입니다.

태스크는 불변 아티팩트를 소비하고 불변 아티팩트를 생성합니다. 새 태스크는 같은 배치에 제출된 태스크나 이전에 제출된 어떤 태스크의 출력에도 의존할 수 있습니다. 따라서 그래프는 단일 워크플로 실행으로 제한되지 않고 점진적으로 자랍니다.

LinkedRun은 의도적으로 매커니즘 전용 커널입니다. LinkedRun은 훈련, 평, 평가, 포 클러스터링, ARI, 모델, 또는 실험 프로토콜이 무엇은 의미하는지 알지 못합니다. 또한 리소스 요구 사항을 예측하지 않습니다. 제출하는 에이전트가 리소스를 서언하면, LinkedRun은 머신 용량 제한과 실행시간 예약에만 제한적으로 그 선언에 신합니다.

Why

의도된 구분은 다음과 같습니다:

  • 태스크 Agent: 작업(작업 에이전트가 무엇을 실행할지 결정하고 리소스 요구를 선언합니다;

  • 프젝트 링: 리소스를 예측하고, 모델을 검증하며, 워크로우을 설계하고, 메트릭을 계산합니다;

  • LinkedRun: 의존성을 저하하고, 폴링-대기 없이 저기하며, 선언된 리소스를 예약하고, 프로세스를 실행하고 취소하며, 아티팩트를 커밋하고, 영구 이벤트을 기록합니다;

Core model

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

데이터 의존성은 실행 의존성이기도 합니다. 아티팩트를 소비하지 않는 경와, after를 통해 순수한 순수 제약을 지정할 수 있습니다.

MCP 도구

  • submit_task

  • submit_graph

  • get_task

  • list_tasks

  • cancel_task

  • retry_task

  • list_artifacts

  • get_artifact

  • get_graph

  • get_events

  • watch_events

  • resource_status

watch_events는 영구한 롱폴링 인터페이스입니다. 클라이언트는 마지막 event_id부터 가더므로 반보적인 폴링 반복이 필요하지 않습니다. 려후 릴리스즈에서는 호스트 지원이 충분히 보편이 되는 되면 실행ハ들을 MCP io.modelcontextprotocol/tasks 확장자에 매핍할 수 있습니다.

Install

pip install -e .

Python 3.11+가 필요합니다. LinkedRun은 MCP Python SDK v2 / MCP 2025-07-28을 대상으로 합니다.

Start

영구 로컬 HTTP 서비스 (여러 파이전트/클라이언트가 같은 그래프를 사용할 때 권장):

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

MCP 엔드포인트는 http://127.0.0.1:8765/mcp입니다.

MCP 프로세스를 자체적으로 관리하는 호스트의 경우:

linkedrun --transport stdio

SQLite 상태와 콘텐츠 주소 지정 아티팩트는 LINKEDRUN_HOME 아래에 저장됩니다.

태스크 하나 제출하기

개념적으로 submit_task에 대한 MCP 호출은 다음과 같습니다:

{
  "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"
  }
}

명령은 헬 문자열이 아니다. 연결 배열입니다. 셸 의미 시멘틱스가 필요한 경우에는 ["bash", "-lc", "..."]을 명시적으로 사용하세요.

같은 제출 내 의존성

submit_graph는 로컬 참조를 지원합니다:

{
  "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"}
    }
  ]
}

전체 배치가는 순환 감시 후 원자적으로 등기됩니다.

제출 간 의존성

이전의 태스크 ID task_abcd가 호출되고 그 태스크가 embedding를 생산한 경우, 이후에 출된 태스크는 다음과 같이 참조할 수 있습니다:

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

커밋된 아티팩트도 직접 참정할 수 있습니다:

artifact:art_abcd

따라서 그래프는 영구하고 가진합니다. 상우의 "워크플로우 실행" 경계가 필요하지 않습니다.

Run-time 계약

태스크가 시작되기 전에 LinkedRun은 전용 시도 디렉터리를 만들고 다음을 설정합니다:

LINKEDRUN_TASK_ID
LINKEDRUN_ATTEMPT_ID
LINKEDRUN_WORKDIR
LINKEDRUN_OUTPUT_DIR
LINKEDRUN_INPUT_<NAME>

각 입력은 불변 콘텐츠 주소 지정 아티팩트 저장소에 대한 관례상 읽기 전용 심볼릭 링크입니다. 선언된 출력 경로는 시도 디렉터리 안에 유지되어야 합니다. 실행 프로세스가 성공적으로 종료되면, 출출은 해시되어 아티팩트 스토 어에 커밋되고 난후에 태스크가가 SUCCEED 상태가 됩니다.

Task states (태스크 상태)

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

재시도하면 태스크별 세대가(generation) 증가합니다. 세대가 만료되면 이전 시도는 커밋할 수 없습니다. 이것이 LinkedRun의 패널/fencing 규칙의 첫 번째 구현입니다.

Resource Policy

자원 사용량을 추면하지 않습니다. 대신 다음을 받아들입니다:

cpu_cores
memory_bytes
gpu_count
gpu_mode=exclusive
gpu_memory_bytes_hint
walltime_seconds
scratch_bytes

gpu_memory_bytes_hint는 v0.1에서 증거/메타데이터로 사용될 뿐입니다. GPU 스케줄링은 전용 디바이스 할당입니다. CPU와 메모리는 예약 회계이며 walltime_seconds가 강제됩니다. OS 수준의 하드 CPU/메모리/스크래치 격리(isolation)는 실행 커널에 실험 특화 승인 로직을 추가하는 대신 향후의 샘드박스 모듈를 위해 의도적으로 남아둡니다.

Current v0.1 boundaries (v0.1 범위)

구현:

  • SQLite/WAL 기반의 가든 태스크, 시도, 의존관계, 아티팩트, 이벤트 상태;

  • 동일 배치 내 원자 백 그래프 등록과 cycle 감출;

  • between tests의 태스크/아티팩트 참조;

  • 실행 되는? (back그라운드 의존 스케줄링);

  • caller가 선언하는 CPU/메모리/GPU 예약;

  • CUDA_VIS_BLE_DEVICES를 통한 GPU 전용 할당;

  • 실해 프로세스 실행, 취소, walltime 제한;

  • 콘텐츠 주소 지정 불변 file/디렉터리 아티팩트;

  • 영구 이벤트와 재연결 않인 롱모 폴링;

  • retry generation/fencing;

  • stdio 및 HTTP 기반의 MCP 트랜스프트.

아지 경화되지 않은 것:

  • CPU, 메모리, 스크래치에 대한 OS cgour / job- object 하드 제한;

  • this 이미 실행 중인 Process들을 다시 문복하면서 메머신/커널 crash까지 견디들 (v0.1은 중단된 시도를 안전하게 실패 처리하고, 이후 명시적 재시도를 요구합니다;

  • 로컬 이방의 HTTP shell 서비스에 대한 인증;

  • via MCP Tasks 확장자 막핑;

  • 아티팩트 오래트 컬렉션 및 보존 정책;

  • 원격 작업자/분산 스케줄링 (현재 목표는 아님).

이런 생략한 것들은 의도적입니다. v0.1은 가х능한 매커니즘을 추가하기 전에 최소한의 커널 경계를 서게합니다.

Development

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

Architecture (구성

만약 어떤 기능이 LinkedRun의 일반적인 태스크 지속성, 의존성 스케줄링, 프로세스 라이프사이클, 아티팩트 커밋, 또는 event durability(이벤트 지속성)를 지 않고는 LinkedRun 밖으로 이동될 수 있다면, 그래한 기능은 LinkedRun 밖에 남아 있을이 해야 합니다. 특히, 모델/프로토콜 검증, resource 예측, 실험 체계/의미, 미트릭 의미, 그리고 공식적 결과 세로 그리고 출판은 외부의 사항입니다.

-
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