Skip to content
Agentmart
Submit a tool

handoff-to-jarvis

Передать запущенные прогоны серверному агенту jarvis4shkodnik под мониторинг — он подтвердит в Telegram, сверит с сервером и поднимет вахтёра.

Skill by Vepricov

IndexedMIT★ 33
Write a review

Chalk Labs

Need help deploying handoff-to-jarvis?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/vepricov-handoff-to-jarvis

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Передать запущенные прогоны серверному агенту jarvis4shkodnik под мониторинг — он подтвердит в Telegram, сверит с сервером и поднимет вахтёра. Use when the user says "передай Джарвису", "поставь под мониторинг", "отдай на сервер", "hand off to jarvis", or after launching runs he intends to leave unattended.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/handoff-to-jarvis

What's inside

Skill name
handoff-to-jarvis
Description
Передать запущенные прогоны серверному агенту jarvis4shkodnik под мониторинг — он подтвердит в Telegram, сверит с сервером и поднимет вахтёра. Use when the user says "передай Джарвису", "поставь под мониторинг", "отдай на сервер", "hand off to jarvis", or after launching runs he intends to leave unattended.
License
MIT
Instructions
171 lines in SKILL.md · view on GitHub

Before installing

  • Instructions read files in your home folder (~/.ssh, ~/.aws…)

Files (1)

  • SKILL.md

SKILL.md (first lines)

# handoff-to-jarvis: отдать прогоны круглосуточному агенту на do-vpn

Джарвис живёт на VPS `do-vpn` и говорит с пользователем в Telegram. Мак засыпает, VPS нет,
поэтому долгие прогоны стережёт он. Канал передачи — **файл JSON в
`/root/jarvis4shkodnik/state/inbox/`**, а не HTTP: на боксе 443/8443 заняты xray, а Мак→do-vpn
рвётся с RST, и файл либо доезжает целиком, либо видно, что не доехал. Схема — единственный
источник истины: `~/brainlab/agents/hermes/jarvis/inbox.py` (`TEMPLATE` внизу — канонический
пример, `RunSpec` — поля прогона, `Handoff.validation_problems()` — за что отклонят). Не
изобретай имена полей, читай файл.

Главное: **передача — это ЗАЯВЛЕНИЕ, а не факт.** Джарвис сверит каждую строку с сервером и поднимет
вахтёра только на то, что реально живо. Соврёшь — опубликует как «заявлено, но не найдено».

## 1. Когда применять и когда НЕ применять

Применять: прогоны запущены (тобой или пользователем), проверены, ноутбук закрывается; либо
пользователь прямо сказал «передай Джарвису / поставь под мониторинг».

НЕ применять:
- **Ничего ещё не запущено.** Джарвис проверяет заявленное и отклонит непроверяемое: получишь
  `rejected/` и сообщение о дырке вместо мониторинга.
- **Ты сам добьёшь эту серию в этой же сессии.** Два наблюдателя за одними логами дают два
  разных числа в Telegram и двойную запись в `Experiments/`.
- **Серия уже передана** — сначала проверь дубль (см. ЗАПРЕТЫ).

## 2. Собрать факты ДО записи файла, а не по памяти

Правило: **в передачу идёт только то, что ты реально прочитал в этой сессии.** Поле, которого не
знаешь, лучше оставить пустым, чем заполнить догадкой: Джарвис строит по нему `spec.md`, и
выдуманный путь лога даст вахтёра, который месяцами стережёт пустоту.

```bash
ssh vv_h200 "tmux ls"                                    # какие сессии реально есть
ssh vv_h200 "tmux capture-pane -t lip_f30:0 -p | tail -15"   # живая панель: Iter= или traceback
L=/data/users/shkodnik1917/llm-baselines-warmup/logs_583/lip_f30.txt
ssh vv_h200 "ls -l --time-style='+%d-%m %H:%M' $L; grep '>Eval: Iter=' $L | tail -2"
ssh vv_h200 "nvidia-smi --query-gpu=index,memory.used,memory.free,utilization.gpu --format=csv,noheader"
```

В руках на каждый прогон обязаны быть: имя tmux-сессии, **абсолютный** путь лога, mtime и
размер лога (растёт ли), свежая строка `>Eval: Iter=… val_loss=…`, номер GPU, `target_iter`.
Запускал сам — соблюди ordering из `personal/Knowledge/autonomous-experiment-loop.md`
(`new-session -d` → `pipe-pane` → `send-keys`; порядок не сворачивается, иначе `pipe-pane`
проигрывает гонку первому выводу и лог пуст) и **дождись 60–90 с, пока в панели появится
`Iter=`**: прогон, где видно только инициализацию оптимизатора, скорее всего уже застрял.

Хост — из `general/servers.md`, не из головы: `vv_h200` достаётся через `ProxyJump do-vpn` и жив,
пока жив `vvh200-tunnel.service`; на `shkodnik_opt` нужен `CUDA_DEVICE_ORDER=PCI_BUS_ID`, `/` всего
133 G, данные на `/home`; на `brain_lab` системный `anaconda3/bin/python` падает на import. Пути
обязаны быть верны с точки зрения сервера, а не Мака: Джарвис ходит на GPU-хост со своего do-vpn.

## 2а. ОБЯЗАТЕЛЬНЫЙ ОПРОС: спросить то, что решает пользователь

Факты ты читаешь с сервера. Но пять полей — это не факты, а **решения пользователя**, и молчаливый
дефолт по ним обходится дорого: пустая `queue` означает, что освободившийся ночью GPU простоит до
утра, а отсутствие `ЦЕЛЬ` означает вахтёра, который не понимает, где финал, и не скажет о нём.

Поэтому: **если пользователь не назвал их сам — спроси, ОДНИМ блоком, до записи файла.** Не по
одному вопросу за раз (это превращает передачу в допрос) и не после доставки (спек уже собран).
Варианты ответов предлагай КОНКРЕТНЫЕ, выведенные из того, что ты только что прочитал: `target_iter`
обычно виден в команде запуска или в конфиге, кандидаты в очередь — в той же папке `scripts_*/` и в
существующей заметке `Experiments/<series>.md`, порог сдвига — из разброса значений в прошлых
прогонах. Спрашивать «а какой порог?» без вариантов бесполезно, пользователь этого не помнит.

| Спросить | Куда уйдёт | Не спрашивать, если |
|---|---|---|
| до какого `iter` считаем и что считается успехом | `ЦЕЛЬ`, `runs[].target_iter` | значение однозначно в команде запуска или конфиге |
| какие конфиги можно запускать следующими и какими именно командами | `queue` (поимённо, `cmd` дословно) | пользователь прямо сказал «только наблюдать» |
| порог значимого сдвига метрики | `thresholds.shift_val_delta` | он сказал «пиши только финалы и падения» |
| что делать нельзя | `forbidden` | — всегда предлагай минимум и дай дополнить |
| когда будить, а когда молчать | `ЭСКАЛАЦИЯ` | он уже перечислил, о чём писать |

**Если он не отвечает или говорит «решай сам»** — не выдумывай очередь и не расширяй права. Ставь
безопасные дефолты: пустая `queue` (режим только-наблюдение), уведомления по финалам и авариям,
`operator_allowed` ровно `["launch_from_queue"]`. И **напиши выбранные дефолты в `comments`
дословно** — тогда Джарвис назовёт их в докладе, и пользователь увидит, на чём вахтёр встал, из
Telegram, а не из файлов на сервере.

Про очередь спрашивай особенно внятно, потому что это единственное, что отличает вахтёра-наблюдателя
от вахтёра, продолжающего работу без пользователя. Формулировка вида «GPU освободится примерно
через N часов, запускать ли следующий конфиг сам и какой» понятнее, чем «заполнить ли queue».

## 3. Собрать JSON по схеме `inbox.py::TEMPLATE`

Обязательный минимум, без него `validation_problems()` отклонит передачу машинно, ещё до похода на
сервер: непустой `project`; непустой список `runs`; у **каждого** прогона заполнен `tmux` или `log`
(`RunSpec.identifiable`) — иначе его нечем проверить. Плюс `created_ts` — текущее unix-время
(`date +%s`): при `age_sec > 24 ч` передача протухла, прогоны суточной давности уже не те.
`version` = 1.

- `id`: `hf-YYYYMMDD-HHMM-<project>-<series>` — по нему пользователь ищет передачу в Telegram и в
  `processed/`. `watcher_name`: короткое `<project>-<series>`, станет папкой `state/watchers/<name>/`.
- `summary` — одна строка, что запущено; `comments` — дословные пожелания пользователя, они уедут
  в `ЦЕЛЬ` и `ЭСКАЛАЦИЯ` спека вахтёра.
- `checks`: `{"iter_grep": ">Eval: Iter=", "val_grep": "val_loss="}` — те самые паттерны, которыми
  ты сам только что грепал; тик не должен изобретать парсинг заново.
- `queue`: только поимённо названные пользователем следующие конфиги с дословными `cmd`.
  Свободная GPU и очевидная польза разрешением на запуск не являются.
- `thresholds`: `shift_val_delta` и `stall_ticks` числами. Триггеры те же, что в
  autonomous-experiment-loop: `final` = `iter >= target_iter` плюс чистый выход в панели,
  `crash` = traceback / OOM / диск / оборванный туннель, `stall` = тот же `iter` два тика подряд при
  живом процессе, `shift` = `|Δval|` больше порога или обгон базлайна. Порог словами («заметно
  упало») делает каждый тик спором с самим собой.
- `notes_paths`: `experiments`, `results`, `plot_cmd` — куда писать и чем обновлять график. Этот
  список заодно определяет, что аудит считает записью «вне объявленного».
- `operator_allowed`: по умолчанию **ровно** `["launch_from_queue"]`. Более широкие права через
  файл выдать нельзя — на них Джарвис всё равно потребует подтверждения в Telegram.
- `forbidden`: минимум «не убивать прогоны без подтверждения» и «не трогать чужие процессы на
  общих серверах», плюс всё, что сказал пользователь.

## 4. Доставка по ssh с ретраями

Файл писать локально в `/tmp/<id>.json`, ключи сверять с `TEMPLATE` глазами. Одиночная попытка
доставки не годится: ТСПУ периодически отдаёт RST, и `scp` умеет молча не доехать. `Host do-vpn` в
`~/.ssh/config` слушает **порт 2222** (22 режется egress-VPN), это уже в конфиге.

```bash
ID=hf-20260803-1612-warmup-583m
INBOX=/root/jarvis4shkodnik/state/inbox

From Vepricov/claude-brainlab, MIT.

More from Vepricov/claude-brainlab

Signals

Stars
33
Forks
5
Open issues
1
Last commit (this folder)
Oct 16, 2026 (18 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Vepricov

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get handoff-to-jarvis running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying handoff-to-jarvis?

CallGet help
Cite this page

handoff-to-jarvis skill. Agent Mart. https://agentmart.dev/skills/vepricov-handoff-to-jarvis (last updated 2026-10-24)