Ledger Architecture: как запускать шесть бизнесов на Grok Bot + Kimi K3
Полный перевод X Article NO1ennn о ledger-архитектуре для Grok Bot и Kimi K3: шесть агентов, шесть ledgers, один desk, контроль денег и handoffs с источниками.
Оригинал опубликован NO1ennn в X Article. Поводом для импорта стал пост автора о Pump Corporation.
Каждый бизнес получает собственного agent, каждое число получает owner, и всё, что двигает деньги, останавливается перед вами.
Почему эта связка, а не одно или другое
Grok Bot — это готовая картинка. Вы пишете именованным bots как teammates; они делят одну persistent cloud machine с browser, filesystem и terminal, остаются залогиненными в ваши реальные tools и продолжают работать, когда ноутбук закрыт.
Kimi K3 — это parts bin. Open weights, coding agent с реальными hands, skills, MCP, subagents и SDK. Ничего не спрятано за subscription tier, и org chart остаётся вашим.
Большинство воспринимает это как versus. Это не так. Grok Bot — самый быстрый способ почувствовать, как выглядит рабочая crew. Kimi K3 — способ пересобрать эту crew так, чтобы она принадлежала вам и масштабировалась дальше одного аккаунта.
Бизнесам всё равно, что вы используете. Им важно, чтобы кто-то владел числом.

Установка Kimi K3
Сначала уберу один миф. Kimi K3 — это не laptop install. Это open weight MoE model на 2,8 триллиона параметров, примерно 104B активных параметров на token через 896 experts, native vision и context window на 1 048 576 токенов. Официальный MXFP4 checkpoint занимает около 1,5-1,6 TB. Официальные vLLM recipes стартуют с 8× B300 / GB300 class GPUs или AMD MI355X equivalent.
Тот, кто говорит “просто скачай”, не смотрел на размер файла.
Official links
- GitHub: https://github.com/MoonshotAI/Kimi-K3
- Weights on Hugging Face: https://huggingface.co/moonshotai/Kimi-K3
- API quickstart: https://platform.kimi.ai/docs/guide/kimi-k3-quickstart, model name
kimi-k3, OpenAI compatible - Kimi Code: https://www.kimi.com/code
Path A — то, что вам реально нужно в первый день
Используйте hosted model. Web и mobile apps на kimi.com или API. Нулевая infrastructure, полный K3, старт сегодня.
Path B — Kimi Code CLI, hands
Именно это превращает answers в work. Он читает и редактирует files, запускает shell commands, fetches pages и выбирает следующий шаг по тому, что нашёл.
# macOS / Linux
curl -LsSf https://code.kimi.com/install.sh | bash# Windows
Invoke-RestMethod https://code.kimi.com/install.ps1 | Invoke-ExpressionЗатем войдите и выберите model:
kimi
/login
/model # choose Kimi K3
Path C — self-hosting open weights
Только если у вас есть cluster. Официальные engines в README: vLLM, SGLang, TokenSpeed.
pip install -U huggingface_hub
hf download moonshotai/Kimi-K3 --local-dir ./Kimi-K3vllm serve moonshotai/Kimi-K3 \
--tensor-parallel-size 8 \
--trust-remote-code \
--load-format fastsafetensors \
--enable-prefix-caching \
--enable-auto-tool-choice \
--tool-call-parser kimi_k3 \
--reasoning-parser kimi_k3Full recipes: vLLM; cookbook: SGLang.
Community GGUF и Unsloth quants существуют для local runs, но всё ещё требуют сотни GB RAM или VRAM: https://unsloth.ai/docs/models/kimi-k3. CPU ports — proof of concept, не production speed.
Моя рекомендация: начните с API. Переходите на self-hosted только тогда, когда token bill превысит GPU bill; вы точно поймёте, когда это случится, потому что будете за этим следить.
Установка Grok Bot
Здесь нет длинного guide, и в этом смысл. Перейдите на сайт, скачайте, войдите.
https://x.ai/bot

Доступ bundled с более высокими xAI tiers, а не продаётся отдельно, поэтому проверьте, что уже входит в ваш current plan, прежде чем платить дважды.
Две вещи, которые нужно знать перед тем, как копировать туда любой org chart:
One machine, many bots. Каждый bot, которого вы создаёте, делит один persistent cloud computer, привязанный к аккаунту, а не к отдельному bot. Именно поэтому они могут передавать друг другу files, browser sessions и logins. И именно поэтому sensitive credentials не должны жить на этой машине.
There is a ceiling. Bots и group chats ограничены на аккаунт, и собственная документация xAI советует подумать, прежде чем добавлять ещё одного. Хороший совет. Каждый extra bot — ещё одна вещь для debug.
Шесть бизнесов, шесть ledgers, один desk
Это место, где все ошибаются, поэтому скажу прямо.
Вы не строите шесть chatbots. Вы строите шесть ledgers, у каждого есть owner.
Ledger — полное состояние одного бизнеса: что пришло, что в работе, что shipped, что оплачено, что сломалось. Agent, владеющий ledger, не отвечает на вопросы о бизнесе. Он отвечает за число внизу этого ledger.
The six
# Business Agent Owns the number Never does
1 Content studio ECHO published pieces, reach, list growth never pitches, never invoices
2 Ecommerce store CRATE orders shipped, margin per SKU never changes prices without approval
3 Service agency PITCH booked calls, signed retainers never delivers the work
4 Digital products VAULT units sold, refund rate never runs paid ads
5 Lead generation BEACON qualified leads delivered never negotiates rates
6 Community / membership HEARTH active members, churn never issues credits
— The desk WARDEN routing, cash, priorities never touches the work itselfЧитайте последние две колонки, а не первые две. Businesses взаимозаменяемы. Refusals — это design.
WARDEN — не manager в корпоративном смысле. Это dispatcher с cash view. Он никогда не пишет copy, не пакует orders, не участвует в sales call. Его единственная работа — решать, какой ledger получает внимание дальше, и останавливать всё, что касается денег.
YOU
│
approvals only
│
WARDEN
routing · cash · priorities
│
┌──────────┬──────────┬───┴───┬──────────┬──────────┐
▼ ▼ ▼ ▼ ▼ ▼
ECHO CRATE PITCH VAULT BEACON HEARTH
content store agency products leadgen community
│ │ │ │ │ │
cms supplier crm gumroad scraper discord
social shipping calendar stripe dialer stripe
analytics ads mgr docs support enrich emailТри правила, которые не дают этому сжечь деньги
Я видел, как многие связывали шесть agents и получали group chat, который просто тратит деньги. Эти три правила отделяют desk от mess.
Rule 1 — два ключа на всё, что двигает деньги
Ни один single agent не может завершить money action. Никогда.
Один agent предлагает, другой agent проверяет по ledger, и вы нажимаете кнопку. Три отдельных contexts, и ни один не может пропустить два других.
CRATE: "reorder 400 units of SKU-118, supplier invoice 2,940"
↓
WARDEN: checks cash on hand, checks 30d sell-through, checks open POs
↓
PASS with note: "cash covers it, sell-through 71%, no open PO on 118"
↓
YOU: approve / hold / killЕсли WARDEN не может проверить число из ledger, запрос умирает. Он не идёт искать число сам. Proposal без числа — broken proposal, а не puzzle to solve.
Rule 2 — каждое действие получает цвет, и цвета enforced in code
Не в prompt. Prompts — предложения. Code — стена.
GREEN runs alone, all night, nobody asks
read the inbox · draft a post · score a lead
pull analytics · tag a ticket · write to a scratch file
AMBER runs, then reports before it lands
schedule a post · update a product description
reply to a support ticket · move a deal stage
RED stops dead, waits for a human
send money · change a price · publish paid ads
email a client list · issue a refund · delete records
cancel a supplier orderДве ловушки, в которые попадают люди.
Cancelling is red. Люди кладут cancels в “undo”, но это не undo. Cancelled supplier order на stock, который вы уже продали, — это дыра, и кнопки un-cancel нет.
Reading can be red. Scraper, который сжигает ваш API quota в 2 утра, стоит следующих четырёх часов бизнеса, делящего этот key.
Вот как это выглядит как configuration, а не как добрые намерения:
{
"permissions": {
"allow": ["read_*", "grep", "mcp__analytics__*", "mcp__crm__read_*", "mcp__store__read_*"],
"ask": ["mcp__cms__schedule_post", "mcp__crm__update_stage", "mcp__support__reply"],
"deny": ["mcp__bank__transfer", "mcp__store__set_price", "mcp__ads__set_budget", "mcp__mail__blast", "mcp__store__cancel_order", "mcp__db__delete_*"]
},
"hooks": {"preToolUse": "./guards/colour_check.sh"}
}deny — это не ask. Deny list существует потому, что в 1 ночи вы одобрите то, чего не стоило. Уберите эту опцию у своего будущего уставшего себя.
Approvals expire. Approval card, на которую никто не ответил за 20 минут, умирает и логирует себя как expired. Упустить opportunity стоит немного. Выполнить действие на context, который устарел шесть часов назад, стоит много.
Rule 3 — каждое утверждение несёт source, иначе handoff отскакивает
Как только agents начинают передавать друг другу numbers, invented numbers начинают двигаться по бизнесу на машинной скорости.
Сделайте это structural, а не judgment call:
{
"claim": "SKU-118 sell-through 71% over 30d",
"value": 0.712,
"source": "mcp://store/reports/sellthrough?sku=118&window=30d",
"read_at": "2026-08-27T09:14:02Z",
"produced_by": "crate",
"ledger": "ecom"
}Число без source теперь schema violation. Оно падает до WARDEN, и WARDEN не приходится решать, доверять ему или нет.
Именно это правило позволило мне перестать перепроверять всё вручную. Этот re-checking tax не показывают ни в одном demo, а он съедает всю экономию времени.
Как agents на самом деле разговаривают друг с другом
Шесть независимых agents — это шесть бизнесов. Шесть agents, которые передают друг другу работу, — это компания. Разница в wiring.
Daily loop
Каждый ledger работает в одном и том же трёхтактном ритме. Same clock, different work.
07:00 MORNING PULL
every operator reads its own world and writes a state line
ECHO → what published, what performed, what is queued
CRATE → orders overnight, stock levels, supplier messages
PITCH → replies, booked calls, deals gone quiet
VAULT → sales, refunds, support questions
BEACON → new leads scored, delivery quota status
HEARTH → joins, cancels, unanswered threads
WARDEN reads six state lines and writes ONE priority list
12:00 MIDDAY BUILD
operators work their top two items only
anything amber gets queued, anything red gets carded
18:00 EVENING CLOSE
every ledger closes with a number and an exception list
WARDEN produces one brief for you
you clear the card queue in about ten minutesCross-wire
Здесь прячутся деньги, и это часть, которую почти никто не строит.
Ваши шесть businesses — не шесть островов. Они кормят друг друга, и agents должны route этот traffic автоматически.
ECHO publishes a piece that pulls unusual traffic
└─→ BEACON tags the inbound as warm, scores it
└─→ PITCH gets the qualified ones as booked call candidates
└─→ signed client goes to HEARTH for onboarding
└─→ HEARTH sees which questions repeat
└─→ VAULT turns the top three into a paid product
└─→ ECHO writes the launch content
└─→ loop closes, and it is warmer than last turnЭтот loop — и есть настоящий business. Всё остальное в статье — plumbing, который делает loop безопасным для unattended run.
CRATE стоит немного в стороне и кормит не leads, а cash:
CRATE margin ──→ WARDEN cash view ──→ funds ad tests for VAULT
└──→ funds BEACON data spendКак handoff выглядит on the wire
{
"from": "beacon",
"to": "pitch",
"kind": "qualified_lead",
"priority": "high",
"payload": {
"company": "Northline Freight",
"trigger": "posted 4 ops roles in 14 days",
"fit_score": 0.81,
"evidence": ["mcp://jobs/search?company=northline&window=14d", "mcp://crm/history?company=northline"]
},
"expires_at": "2026-08-28T09:00:00Z"
}Обратите внимание на expires_at. Leads портятся. Handoff без expiry превращается в очередь stale work, которую какой-нибудь agent в итоге выполнит в худший момент.

Router enforce org chart, а не prompt
Вежливость в prompt — не control. Положите это в code:
def route(task, desk):
owner = desk.owner_of(task.ledger)
if task.colour == "RED" and not desk.has_verification(task.id):
return card_to_human(task, reason="red action, awaiting your call")
if not desk.evidence_complete(task.id):
return bounce(task, to=task.origin, reason="missing source on a number")
return dispatch(owner, task, desk.slice_for(owner))desk.slice_for(owner) — тихий герой всей системы. PITCH никогда не видит ecommerce ledger. CRATE никогда не видит client list. Agent нельзя уговорить неправильно использовать данные, которые ему никогда не дали.
Writing the agents
Prompt описывает эту одну задачу. Charter описывает seat. Вам нужны charters.
В Kimi Code это skill files, которые загружаются сами, когда работа совпадает.
---
name: crate-ops
description: Owns the ecommerce ledger end to end
whenToUse: Anything touching orders, stock, suppliers or SKU margin
---
# CRATE — Store Operator
## Owns
Orders shipped, stock cover, margin per SKU, supplier comms.
The number: contribution margin this week.
## Refuses
Never sets or changes a price.
Never cancels a supplier order.
Never runs or edits ads.
Never emails the customer list.
## What good output looks like
A daily state line with four figures, each carrying a source:
orders, stock cover in days, margin, exceptions.
Exceptions are named, not summarised.
## Hard limits
Reorder proposals above 3,000 always go to WARDEN with cash context.
Any SKU below 10 days of cover is an exception, not a note.
Any supplier reply older than 48h without an answer is an exception.
## Rules
If a number is missing, say which one and stop.
Do not estimate margin. Pull it or flag it.
If two data sources disagree, report both and do not pick.Последнее правило важнее, чем кажется. Agent, который тихо выбирает победителя между двумя конфликтующими numbers, уже начал выдумывать business results.
Сначала пишите refusals. Каждый раз. Если вы не можете написать три вещи, которые seat никогда не должен делать, seat ещё не существует: у вас просто vague helper.
Теперь разговор о деньгах
Буду честен в этом разделе, потому что большинство постов на эту тему такими не являются.
Это model numbers, не receipts. Они показывают, как структура выходит на six figures и что должно быть правдой, чтобы она работала. Ваш market, offer и close rate решают, получится ли. Относитесь к этому как к арифметике, с которой можно спорить, а не как к обещанию.
Реалистичная форма месяца на 100k через шесть ledgers:
Service agency (PITCH) 8 retainers × 4,500 = 36,000
Digital products (VAULT) 620 units × 39 = 24,180
Ecommerce (CRATE) 1,400 orders × 14 margin = 19,600
Lead generation (BEACON) 3 clients × 3,500 = 10,500
Community (HEARTH) 410 members × 19 = 7,790
Content studio (ECHO) sponsorships + affiliate = 4,800
-------
102,870ECHO зарабатывает меньше всех и является самым важным seat на desk. Оценивайте его по тому, что он отправляет downstream, а не по тому, что он bills.
Cost side, если всё запускать через API:
Model usage across six ledgers 900 - 1,600 / month
Tools, hosting, data, subscriptions 400 - 700 / month
Grok Bot access (bundled tier) included
------------------
1,300 - 2,300 / monthИнтересное число — не margin. Это cost per finished task, потому что именно оно показывает, когда стоит менять billing model. Отслеживайте его с первой недели. Flat subscriptions выигрывают у per-token pricing выше определённого volume threshold, и найти свой threshold без собственных данных невозможно.
Порядок сборки, который реально работает
Не стройте шесть agents сразу. Вы потратите месяц на debugging company, у которой нет customers.
WEEK 1 One ledger. The one already making money.
Run its jobs manually through Kimi Code and watch.
Write down every place it stalled or guessed.
That list is your first charter.
WEEK 2 Colour every action in that ledger.
Put green, amber, red into permissions and a preToolUse hook.
Break it on purpose. Try to make it spend. Fix what leaked.
WEEK 3 Second ledger, and WARDEN.
Two operators is where routing starts to matter.
Build the evidence schema now, before six seats depend on it.
WEEK 4 Wire the first cross-handoff between the two.
One direction only. Prove it moves work without you.
WEEK 5-6 Ledgers three and four. Reuse the charter template.
The second half is much faster than the first.
WEEK 7 The SDK wrapper and the schedule.
Now it runs nights and you check a queue in the morning.
WEEK 8 Ledgers five and six, only if four ran a full week
without you opening a terminal.from kimi_agent_sdk import Agent, Session
desk = Session(
work_dir="./desk",
skills=["warden", "echo", "crate", "pitch", "vault", "beacon", "hearth"],
mcp_servers=["store", "crm", "cms", "mail", "analytics", "stripe"],
)
run = Agent(session=desk).run(
task="Run the evening close on all six ledgers. Card anything red.",
require_approval=["mcp__bank__transfer", "mcp__store__set_price", "mcp__ads__set_budget", "mcp__mail__blast"],
)
for event in run.events:
if event.type == "approval_requested":
push_card(event) # your queue, your expiry, your decisionFailure list
Всё ниже уже ломало кому-то систему. Прочитайте это до сборки, а не после.
Один agent на business, а не один agent на tool. Tool-shaped agents размножаются, пока у вас не оказывается двадцать вещей для debug и ни одного owner числа.
Dispatcher не должен делать work. В момент, когда WARDEN начинает писать copy, он перестаёт уметь говорить “нет”.
Ни один agent не чинит плохой input другого agent. Он rejects it и называет missing field. Repair прячет broken upstream навсегда.
Shared credentials — shared blast radius. Одна машина Grok Bot на аккаунт — feature для handoffs и risk для keys. Scope credentials per ledger.
Every seat on the same base model is one blind spot. Если все рассуждают одинаково, они одинаково промахиваются. Честное исправление — другая model в verification chair.
One poisoned data source hits several ledgers at once. Если BEACON, PITCH и WARDEN доверяют одному feed, плохой feed рождает confident agreement вместо disagreement, который поймал бы проблему.
Coordination gets harder faster than output gets better. Шесть — не magic; это минимальное число, при котором каждая dangerous capability сидит в отдельном chair. Добавляйте седьмого только когда шестой стал скучным.
Суть
То, что вы на самом деле строите, — не шесть AI workers. Это desk, где у каждого числа есть owner, у каждого claim есть source, и всё, что двигает деньги, останавливается перед человеком.
Model важит меньше, чем люди думают. K3 даёт reasoning и context window, чтобы удержать полный business day. Kimi Code даёт hands. Grok Bot показывает, как выглядит finished thing, ещё до того как вы его построили.
Org chart — это product. Six agents, six ledgers, one desk и queue, которую вы очищаете за десять минут в день.
Вот как выглядит running six businesses, когда за ними никто не смотрит, кроме вас.
If this was useful, I post breakdowns like this every few days.