myc

myc

A local task-and-memory layer for coding agents: a task queue, an oplog of facts and decisions, hybrid search over a project's memory, and a built-in code index. No network calls of its own, no mandatory LLM key.

Локальный слой задач и памяти для кодовых агентов: очередь задач, оплог фактов и решений, гибридный поиск по памяти проекта и встроенный индекс кода. Без собственных сетевых вызовов и без обязательного ключа к модели.

Agents forget. myc is the part that doesn't: decisions survive context compaction, work survives process death, and both survive being moved between machines through plain git.

Агенты забывают. myc — та часть, которая нет: решения переживают сжатие контекста, работа переживает смерть процесса, и то и другое переезжает между машинами обычным git.

§ Every number on this page was measured, and the command that reproduces it stands next to it. Nothing here is an estimate. The build of this site fails if a number stops matching the measurement artefact in the repository. Каждое число на этой странице измерено, и рядом с ним стоит команда, которой его повторяют. Здесь нет ни одной оценки на глаз. Сборка этого сайта падает, если число разошлось с артефактом замера в репозитории.
01

Install

Установка

One command, no models pulled. Semantic search and the code grammars are fetched only when you ask, and until then the output says what is missing.

Одна команда, модели при установке не качаются. Семантический поиск и грамматики кода скачиваются только по вашей команде, а до тех пор вывод говорит, чего не хватает.

Requires Bun — this is not fine print

Требуется Bun — и это не мелкий шрифт

The runtime is bound to bun:sqlite: SQLite and sqlite-vec ship inside Bun, with no native bindings on the Node side. It will not start on plain Node.js or Deno. Bun ≥ 1.3.0, pinned in engines.bun.

Рантайм привязан к bun:sqlite: SQLite и sqlite-vec едут внутри Bun, нативных биндингов на стороне Node нет. На чистом Node.js или Deno он не стартует. Bun ≥ 1.3.0, зафиксирован в engines.bun.

$curl -fsSL https://bun.sh/install | bash

macOS and Linux. On Windows, use WSL and install Bun and myc inside it: the launcher does not start in cmd or PowerShell, and the npm install says so.

macOS и Linux. На Windows — через WSL, Bun и myc ставятся внутри неё: в cmd и PowerShell лаунчер не стартует, и установка через npm об этом говорит.

Then myc itself

Дальше сам myc

$bun install -g @aistastudio/myc
$myc --version
How the package size was measuredКак померен размер пакета
The newest code instead of the releaseСвежий код вместо релиза

Build from source: one binary, dist/myc. Put it where myc wire can find it — MYC_BIN, ~/.myc/bin/myc or PATH; if it can't, wire says so instead of writing a config that will not start.

Сборка из исходников: один бинарь, dist/myc. Положите его туда, где его найдёт myc wire, — MYC_BIN, ~/.myc/bin/myc или PATH; если не найдёт, wire скажет об этом, а не запишет конфиг, который не стартует.

git clone https://github.com/aistastudio/myc && cd myc
bun install && bun run build
./dist/myc --version

Quick start

Быстрый старт

Two commands set a project up; the rest is the loop an agent lives in.

Две команды настраивают проект; остальное — цикл, в котором живёт агент.

myc init            # .myc/, SQLite, migrations
myc wire            # hooks + MCP for the 4 agents
myc ready --claim   # take the next task
myc show <id>       # all that is known about it
myc close <id>
myc remember "why X, not Y"
myc recall "how retrieval works"
myc prime           # context packet for a session
myc code fetch      # grammars, once
myc code index      # symbols, callers, search
myc doctor          # claims vs. a recount
myc init            # .myc/, SQLite, миграции
myc wire            # хуки и MCP для 4 агентов
myc ready --claim   # взять следующую задачу
myc show <id>       # всё, что о ней известно
myc close <id>
myc remember "почему X, а не Y"
myc recall "как устроен ретривал"
myc prime           # пакет контекста сессии
myc code fetch      # грамматики, один раз
myc code index      # символы, вызовы, поиск
myc doctor          # заявленное против пересчёта

Wiring agents: the flags that matter

Подключение агентов: флаги, которые важны

wire writes only its own files in full and merges JSON configs node by node with a backup; CLAUDE.md is never touched. Everything below is opt-in.

wire пишет целиком только свои файлы, а JSON-конфиги сливает по узлам с резервной копией; CLAUDE.md не трогает никогда. Всё ниже — только по флагу.

myc wire --dry-run              # show every change, write nothing
myc wire --agents claude,codex  # only some of the agents
myc wire --status-line          # + myc's status line
myc wire --queue-hook           # + heavy commands take turns
myc wire --agents-md            # + the myc block in AGENTS.md
myc unwire                      # remove what wire put in
myc wire --dry-run              # показать всё, ничего не писать
myc wire --agents claude,codex  # только часть агентов
myc wire --status-line          # + строка статуса myc
myc wire --queue-hook           # + тяжёлые команды по очереди
myc wire --agents-md            # + блок myc в AGENTS.md
myc unwire                      # снять то, что поставил wire

Agents in git worktrees: myc wire --scope user puts the same into Claude Code's user layer, which every session reads — silent where there is no myc workspace; add --status-line for the line there too.

Агенты в git worktree: myc wire --scope user ставит то же в пользовательский слой Claude Code, который читает каждая сессия, — и молчит там, где нет воркспейса myc; с --status-line там будет и строка статуса.

Semantic search is opt-in

Семантический поиск — по запросу

$myc models fetch multilingual-e5-small-q8

Until you run it, search is lexical (BM25) and says so out loud on every degraded answer: WARN degraded.embeddings. The invariant is that a degraded answer must never be indistinguishable from a healthy one.

До этого поиск лексический (BM25) и говорит об этом вслух в каждом ухудшенном ответе: WARN degraded.embeddings. Инвариант такой: ухудшенный ответ не имеет права быть неотличимым от здорового.

The code index needs its grammars once

Индексу кода грамматики нужны один раз

Grammars are not shipped in the package: myc code fetch downloads exactly the ones this repository's files need, checked by sha256. Indexing never goes to the network — a language whose grammar is missing is skipped and named. Symbols, callers and code search cover TypeScript, TSX, JavaScript and Python; every other file still gets code grep and anchors.

Грамматики в пакете не лежат: myc code fetch скачивает ровно те, что нужны файлам этого репозитория, со сверкой sha256. Индексация в сеть не ходит никогда — язык без грамматики пропускается и называется. Символы, вызовы и поиск по коду — для TypeScript, TSX, JavaScript и Python; любой другой файл всё равно получает code grep и якоря.

$myc code fetch
$myc code index
02

What myc does

Что умеет myc

Everything that exists today, grouped. Each line names the release it arrived in and a command that shows it on your machine; every myc command on this page is checked against this build's own --help when the site is built, flags included.

Всё, что есть сегодня, по группам. У каждой строки — релиз, в котором это появилось, и команда, которой это видно на вашей машине; каждая команда myc на этой странице при сборке сайта сверяется со справкой --help этой самой сборки, вместе с флагами.

03

Speed is a constraint, not an optimisation

Скорость — ограничение, а не оптимизация

Every hot path has a budget. The frame of each bar below is the budget; the fill is what was measured. Where it is enforced, precisely: on every push CI checks the relative half of each budget test — the healthy path against a deliberately degraded one, measured alternately, so the runner's hardware cancels out. The absolute budgets and the 15% p95 regression line are calibrated on the machine named below and hold there; GitHub's 4-core runner is not that machine, so CI and the nightly run there declare it uncalibrated (MYC_BENCH_ABSOLUTE=0): they check the structural and relative halves and print the absolute numbers with a verdict, without failing on them.

У каждого горячего пути есть бюджет. Рамка каждой полосы ниже — это и есть бюджет, заливка — измеренное. Где именно он проверяется: на каждом пуше CI проверяет относительную половину каждого бюджетного теста — здоровый путь против заведомо деградировавшего, замеренные вперемешку, так что железо раннера сокращается. Абсолютные бюджеты и порог регрессии p95 в 15% откалиброваны на машине, названной ниже, и держатся на ней; 4-ядерный раннер GitHub — не она, поэтому CI и ночной прогон объявляют его неоткалиброванным (MYC_BENCH_ABSOLUTE=0): проверяют структурную и относительную половины, а абсолютные числа печатают с вердиктом, не падая на них.

p99 against its budget, 100 000 nodes

p99 против своего бюджета, 100 000 узлов

Command, conditions and the full percentile tableКоманда, условия и полная таблица перцентилей
04

Ranking is measured, not asserted

Ранжирование измеряется, а не декларируется

Two labelled corpora with graded relevance. Each one contains a control group that gets worse when the feature works — so the gain cannot be manufactured by shaping the corpus.

Два размеченных корпуса с градуированной релевантностью. В каждом есть контрольная группа, которая при верной работе ухудшается — поэтому выигрыш нельзя получить, подогнав корпус.

Why a control group that gets worse is the point

Зачем нужна группа, которой становится хуже

A boost that lifts priority, freshness and layer must push down a document that matches the words but is stale and low-priority. If every group improved, the corpus would be telling us what we already wanted to hear. The distractor group is the falsification test: it is expected to drop, and it drops.

Буст, который поднимает приоритет, свежесть и ярус, обязан опустить документ, который совпал словами, но протух и малоприоритетен. Если бы улучшились все группы, корпус просто повторял бы то, что мы хотели услышать. Группа дистракторов — проверка на опровержение: она должна упасть, и она падает.

Boosts: priority, freshness, layer

Бусты: приоритет, свежесть, ярус

Command and the full tableКоманда и полная таблица

Graph expansion to two hops

Расширение по графу на два хопа

Command and the full tableКоманда и полная таблица
05

A cache that cannot go stale silently

Кеш, который не может протухнуть молча

Result, embedding and hydration caches are invalidated by MAX(oplog.seq) read from the database — so a write by another process invalidates them too.

Кеши результатов, эмбеддингов и гидратации инвалидируются по MAX(oplog.seq), прочитанному из базы — поэтому запись чужого процесса сбрасывает их тоже.

Price of a hit

Цена попадания

Command and the numbersКоманда и числа

What honest invalidation costs

Чего стоит честная инвалидация

Sequence validation is global: any write drops the whole search cache. That is the price of never returning a stale answer, and it is shown here rather than hidden.

Валидация по seq глобальная: любая запись сбрасывает весь кеш поиска. Это цена того, что устаревший ответ невозможен, и она показана, а не спрятана.

06

Memory survives compaction, and knows whose it is

Память переживает сжатие и знает, чья она

The two moments where agent memory is actually lost: the context window being squeezed, and one conversation's notes leaking into another's. Both are handled, and both say what they did.

Два момента, в которые память агента на самом деле теряется: сжатие окна контекста и утечка заметок одной беседы в другую. Оба закрыты, и оба сообщают о том, что сделали.

Before the context is squeezed

Перед тем, как контекст сожмут

myc wire installs a pre-compact hook. The session episode is written to disk first — raw, L0, acl private, secrets masked — and only then a rescue packet is printed back into the context that survives. Distillation is queued, never done on the write path: exceeding the hook's timeout costs the summary, not the record.

myc wire ставит хук pre-compact. Эпизод сессии сначала ложится на диск — сырым, L0, acl private, с замаскированными секретами, — и только потом в выживающий контекст печатается спасательный пакет. Дистилляция уходит в очередь, а не делается на пути записи: превышение таймаута хука стоит выжимки, но не записи.

$ myc absorb-session --reason manual --transcript … --agent claude
# myc: context is being compacted — here is what must not be lost
episode sess-5jh8je4g050m saved (265 B)
NEXT     myc show sess-5jh8je4g050m · myc ready --claim

Whose note is this

Чья это заметка

Every note carries a reach: session for this conversation, project for everyone. The automatic context packet — prime — carries only the current session's notes, so another agent's conversation does not leak into yours. An explicit recall still finds them: hiding knowledge is not the same as scoping it. Each row says which it is.

У каждой заметки есть охват: session — эта беседа, project — все. Автоматический пакет контекста prime несёт только заметки текущей сессии, поэтому чужая беседа не протекает в вашу. Явный recall их всё равно найдёт: спрятать знание — не то же самое, что ограничить его охват. И каждая строка говорит, что она такое.

# session s1                     # session s2
ses  session note: retries…      ses* session note: retries…
prj  project note: jitter…       prj  project note: jitter…

ses own session · ses* someone else's · prj project-wide

ses своя сессия · ses* чужая · prj общее для проекта

A status line with what the agent cannot see

Строка статуса — то, чего агент не видит

myc wire --status-line puts one line under Claude Code's prompt: how full the context is, the task queue, the code index, the project's memory, and how many of this session's calls to myc returned something — counted from the host's own transcript, where an error, a refusal or an empty answer is a call but not a useful one. Opt-in; a status line that was there before keeps receiving the same input and is never waited on or killed. Since 0.3.6 agents in git worktrees get it too: myc wire --scope user --status-line.

myc wire --status-line ставит под приглашением Claude Code одну строку: заполненность контекста, очередь задач, индекс кода, память проекта и сколько обращений к myc в этой сессии дали результат — по транскрипту самого хоста, где ошибка, отказ и пустой ответ — обращение, но не полезное. Только по флагу; строка статуса, стоявшая до неё, получает тот же ввод, её не ждут и не убивают. С 0.3.6 её получают и агенты в git worktree: myc wire --scope user --status-line.

myc │ ctx 42% │ 61 ready · 34 blocked │ 612 files · 4268 symbols · 1h ago │ 101 notes │ 600/653 useful calls

Heavy commands take turns

Тяжёлые команды — по очереди

Several agents on one machine run the full test suite and builds at once and slow each other down. myc run -- <command> puts the command into one queue shared by every repository of the machine, waits for a free slot and runs it with its own terminal and exit code; myc queue shows who is running and who is waiting. A waiting command says whom it waits for, and a holder that dies frees its slot. Agents don't have to remember any of it: myc wire --queue-hook adds a Claude Code hook that sends a full test run or a build through the queue by itself and lets everything else through untouched — a command that is not heavy never starts bun or node. Opt-in. And myc run is not a way around permissions: a queued command goes through without a question only when your own rules would let the original command through; otherwise Claude Code asks and shows the whole command, and wire allows myc's subcommands one by one instead of all of them.

Несколько агентов на одной машине одновременно гоняют полный прогон тестов и сборки и мешают друг другу. myc run -- <команда> ставит команду в общую для всех репозиториев машины очередь, ждёт свободный слот и выполняет её с её же терминалом и кодом выхода; myc queue показывает, кто выполняется и кто ждёт. Ждущая команда говорит, кого ждёт, а упавший держатель освобождает слот. Помнить об этом агенту не нужно: myc wire --queue-hook ставит Claude Code хук, который сам отправляет полный прогон тестов или сборку через очередь, а всё остальное пропускает нетронутым — лёгкая команда не запускает ни bun, ни node. Только по флагу. И обходом прав myc run не служит: команда в очереди проходит без вопроса, только если ваши правила пропустили бы исходную; иначе Claude Code спрашивает и показывает всю команду, а wire разрешает подкоманды myc по одной, а не все сразу.

myc run -- bun test
myc queue
myc wire --queue-hook
07

Migration from beads is real, not a demo

Миграция с beads настоящая, а не демонстрационная

A working project imported into an empty workspace. Unknown issue types are carried over verbatim and named; out-of-range priorities are clamped and named — instead of one odd row aborting the import. The numbers below are from the first release; what the import learned since is listed under them, with what it used to lose.

Живой проект, ввезённый в пустой воркспейс. Незнакомые типы задач переносятся дословно и называются; приоритеты вне шкалы прижимаются и называются — вместо того, чтобы одна странная строка роняла весь импорт. Числа ниже — с первого релиза; чему импорт научился с тех пор, перечислено под ними, вместе с тем, что он раньше терял.

Commands that reproduce thisКоманды, которыми это повторяют

What the import carries since that run — and what it used to lose

Что импорт везёт с того прогона — и что он раньше терял

The run above silently dropped the comments of that same export while reporting every note as imported. It was found the next day, by the owner, on a real project, and fixed in 0.2.0 (git show aac5d1f). The import has not been re-timed on that project since; what it carries now:

Прогон выше молча потерял комментарии той же выгрузки, отчитавшись, что все заметки ввезены. Это нашёл владелец на следующий день, на живом проекте, и в 0.2.0 это исправлено (git show aac5d1f). На том проекте импорт с тех пор не перемеряли; что он везёт теперь:

  • 0.2.0 comments, into the node's thread, with their authors; unknown top-level fields are named instead of dropped;
  • 0.2.0 комментарии — в нить узла, с авторами; незнакомые поля верхнего уровня называются, а не выбрасываются;
  • 0.3.3 acceptance criteria and design, into the task body between managed markers, and the source's own dates, author and owner;
  • 0.3.3 критерии приёмки и дизайн — в тело задачи между управляемыми маркерами, и даты, автора и владельца из источника;
  • 0.3.3 statuses myc lacks, such as deferred, as blocked with the original word kept — never as open;
  • 0.3.3 статусы, которых в myc нет, вроде deferred, — как blocked с сохранённым исходным словом, и никогда как open;
  • 0.3.3 sub-repositories of a shared workspace, each with its own repository reach; an empty source is a refusal with a hint, not a silent zero.
  • 0.3.3 вложенные репозитории общего воркспейса — каждый со своим охватом; пустой источник — отказ с подсказкой, а не молчаливый ноль.

Where the two ready queues disagreed — and who was right

Где две очереди готовых задач расходились — и кто был прав

08

Comparison, with the losses included

Сравнение, включая проигрыши

A table where one tool wins every row is an advertisement, not a comparison. Each tool below is compared only where the claim can be checked by a command on your own machine — which is also why some well-known tools are absent: we have not measured them, so they are not here.

Таблица, где один инструмент выигрывает во всех строках, — реклама, а не сравнение. Каждый инструмент ниже сравнивается только там, где утверждение проверяется командой на вашей машине. По этой же причине здесь нет некоторых известных инструментов: мы их не мерили, значит, их тут нет.

ToolИнструмент Where it beats mycВ чём он лучше myc Where myc beats itВ чём myc лучше Check it yourselfКак проверить
beads
1.0.5
A 1.0 release against our , a Go binary with no Bun requirement, and multi-machine sync through Dolt — a real database protocol rather than a merge driver over text.

Its ready queue used to be more correct than ours, too: beads inherits blockers down the parent chain and myc looked only at a task's own, so on the same imported graph myc offered 195 against beads' 144. Those 51 sat inside a still-blocked epic and beads was right to hide them. Fixed since (memory-atcm254ry6c7): both queues now return 152, and myc names what it withheld — 281 blocked (51 through an ancestor).
Релиз 1.0 против нашего , бинарь на Go без требования Bun и синхронизация между машинами через Dolt — настоящий протокол базы, а не merge-драйвер поверх текста.

Его очередь готовых задач тоже была корректнее нашей: beads наследует блокеры вниз по цепочке parent, а myc смотрел только на собственные блокеры задачи, и на одном и том же ввезённом графе myc предлагал 195 против 144 у beads. Те 51 задача лежали внутри ещё заблокированного эпика, и beads был прав, что их прятал. С тех пор исправлено (memory-atcm254ry6c7): обе очереди дают 152, и myc называет то, что скрыл, — 281 заблокировано (51 через предка).
Hybrid search over memory with a measured MRR@10 and labelled corpora; latency budgets on 100 000 nodes that a command in the repository re-measures; facts and decisions as first-class nodes next to tasks, not only issues; and a built-in code index whose anchors tie that knowledge to the code it is about. Гибридный поиск по памяти с измеренным MRR@10 и размеченными корпусами; бюджеты латентности на 100 000 узлов, которые перемеряет команда из репозитория; факты и решения как полноправные узлы рядом с задачами, а не только задачи; и встроенный индекс кода, чьи якоря привязывают это знание к коду, о котором оно. bd version
bd ready
myc ready --json
graft
0.16.0
It ships a concept map an LLM wrote. graft build --deep spends a model on per-symbol summaries and a prose map of the repository; myc has no such pass and no API key to run one. On the mechanical questions the gap has closed: both parse with tree-sitter, and on this repository myc code grep finds 13 occurrences of a literal where graft finds 12, myc code map fits in 2 742 characters against 24 583, and myc code search answers "how is the session resolved" where graft ask returns "no matching nodes". What myc gives back is the other half: an anchor ties a note to a span and follows it as the code moves. У него есть концептуальная карта, написанная моделью. graft build --deep тратит LLM на выжимки по символам и связный рассказ о репозитории; у myc такого прохода нет и ключа для него тоже. На механических вопросах разрыв закрылся: разбирают обе стороны tree-sitter'ом, и на этом репозитории myc code grep находит 13 вхождений литерала против 12 у graft, myc code map укладывается в 2 742 знака против 24 583, а myc code search отвечает на «как резолвится сессия» там, где graft ask говорит «no matching nodes». Взамен myc даёт вторую половину: якорь привязывает заметку к участку кода и едет за ним при правках. Since 0.3.0 the jobs overlap, and this repository dropped graft: myc answers the mechanical code questions itself — symbol, callers, skeleton, search, grep, map, over MCP as well — and around them keeps what graft does not: tasks, decisions and attempts, a measured ranking of project knowledge, and anchors that follow the code. The price, as the 0.3.0 release notes state it: this repository's database grew from 5 MB to 34 MB. С 0.3.0 работы пересекаются, и этот репозиторий от graft отказался: механические вопросы о коде myc отвечает сам — symbol, callers, skeleton, search, grep, map, и через MCP тоже, — а вокруг них держит то, чего у graft нет: задачи, решения и попытки, измеренное ранжирование знания о проекте и якоря, которые едут за кодом. Цена — как её называет описание релиза 0.3.0: база этого репозитория выросла с 5 до 34 МБ. graft --version
graft callers <symbol>
Markdown notes
CLAUDE.md, MEMORY.md
Заметки в markdown
CLAUDE.md, MEMORY.md
Zero install, and every agent already reads them. A markdown file is reviewable in a pull request diff, editable in any editor, and survives the disappearance of every tool in this table — including myc. If the project's knowledge fits on one page, this is the right answer and myc is overhead. Ноль установки, и их уже читает любой агент. Файл markdown виден в диффе пул-реквеста, правится в любом редакторе и переживает исчезновение любого инструмента из этой таблицы, включая myc. Если знание проекта помещается на одну страницу, это верный ответ, а myc — лишний. A page does not rank. Past a few hundred facts the whole file goes into the context window every session; myc returns a ranked slice with a budget and names what it hid. Страница не ранжирует. За несколькими сотнями фактов весь файл каждый раз уезжает в контекст; myc отдаёт ранжированный срез с бюджетом и называет числом, что он скрыл. myc prime
wc -c CLAUDE.md

All three tools were on this machine when the table was written; the versions are the ones the commands printed.

Все три инструмента стояли на этой машине, когда писалась таблица; версии — те, которые напечатали команды.

09

What myc is not

Чего в myc нет

Today myc is a single-user local tool over files in git. The list below is not a roadmap teaser — it is what does not exist, stated as plainly as what does.

Сегодня myc — однопользовательский локальный инструмент над файлами в git. Список ниже не анонс: это то, чего нет, сказанное так же прямо, как и то, что есть.

Does not exist

Не существует

  • No server. myc serve is designed and not written; what exists is a package with health endpoints and no command to start it.
  • Нет сервера. myc serve спроектирован и не написан; есть только пакет с эндпоинтами здоровья и без команды, которая бы его запускала.
  • No team mode and no ACL enforcement across users.
  • Нет командного режима и нет проверки ACL между пользователями.
  • No network sync. Machines exchange the oplog through git, and that is the only route.
  • Нет сетевой синхронизации. Машины обмениваются оплогом через git, и это единственный путь.
  • No Postgres, no containers, no hosted anything.
  • Нет Postgres, нет контейнеров, нет ничего размещённого.
  • No native Windows: on Windows, myc runs inside WSL.
  • Нет Windows как таковой: на Windows myc работает внутри WSL.

Does exist

Существует

  • A task queue with leases, and blockers inherited down the parent hierarchy.
  • Очередь задач с арендой и блокерами, наследуемыми вниз по иерархии parent.
  • An oplog of facts and decisions, merged per field in plain git.
  • Оплог фактов и решений, сливаемый пополево обычным git.
  • Hybrid lexical + vector search with a measured MRR@10.
  • Гибридный лексический + векторный поиск с измеренным MRR@10.
  • Latency budgets on 100 000 nodes, re-measured by one command in the repository.
  • Бюджеты латентности на 100 000 узлов, которые перемеряет одна команда из репозитория.
  • A built-in code index on tree-sitter — symbols, callers, skeleton, search, grep, map — and anchors from knowledge to code.
  • Встроенный индекс кода на tree-sitter — символы, вызовы, скелет, поиск, grep, карта — и якоря от знания к коду.
  • Import from beads, with every anomaly named rather than swallowed.
  • Импорт из beads, где каждая аномалия называется, а не проглатывается.
  • A read-write web interface for boards, cards and threads.
  • Веб-интерфейс с записью: доски, карточки, нити обсуждения.
  • A machine-wide queue for heavy commands, and a status line for Claude Code.
  • Общая для машины очередь тяжёлых команд и строка статуса для Claude Code.
  • Loud degradation: no silent fallbacks anywhere on the hot path.
  • Громкая деградация: молчаливых откатов на горячем пути нет.

The full list, each line with its release and a command: What myc does.

Полный список, у каждой строки релиз и команда: Что умеет myc.

10

What's planned, and how far each part has got

Что запланировано и насколько продвинулась каждая часть

Every epic in the project's own tracker, and every task still open inside it. Nothing here has a date. The counts are not typed in: site/roadmap.ts reads them from myc before a release, and the site build refuses a plan that describes a task the tracker no longer has open.

Каждый эпик из трекера самого проекта и каждая задача, ещё открытая внутри него. Здесь нет ни одной даты. Числа не вписаны руками: site/roadmap.ts читает их из myc перед релизом, а сборка сайта не пропускает план, описывающий задачу, которая в трекере уже не открыта.

Roadmap — done and not-done shown the same way

Дорожная карта — сделанное и несделанное показаны одинаково

Command per milestoneКоманда на каждую веху
11

Reproduce every number on this page

Повторить каждое число этой страницы

Clone the repository, install, and run the list below. The numbers on this page live in site/measurements.json; site/build.ts checks them against the measurement artefacts in the repository and refuses to build the site on a mismatch.

Склонируйте репозиторий, поставьте зависимости и прогоните список ниже. Числа этой страницы лежат в site/measurements.json; site/build.ts сверяет их с артефактами замеров в репозитории и отказывается собирать сайт при расхождении.

The test suite, on this release's code

Прогон тестов на коде этого релиза