Stopline Engineering: How to Build Your Own Agent Crew on Grok Bot + Kimi K3 (Full Guide)

@gippp69
Gipp 🦅@gippp69
2 views Aug 26, 2026 ~12 min read
Advertisement

Grok Bot and Kimi are not competitors. They are two halves of the same build.

Media image

Grok Bot shows you what a finished crew looks like. Agents with their own computer, real logins, work that keeps going after you shut the laptop.

Kimi gives you every part to rebuild it, in the open, and lets you keep the org chart.

I ran six agents for four weeks on the same workload. Money first.

  • Grok Bot access is bundled, not standalone: $300 a month on SuperGrok Heavy, $200 on Cursor Ultra, $120 per seat on Cursor Teams Premium
  • Six agents on Kimi at my volume: $190 a month, $2,278 a year
  • Against the $300 tier: $110 a month saved, $1,322 a year, 37% off the same output
  • Cost per finished task: $0.31, at 61k tokens average
  • Where the flat subscription starts winning again: 387 tasks a month at $120, 645 at $200, 968 at $300
  • That last line is the one nobody puts in these posts. Paying per token wins until your volume gets high enough that flat pricing takes over. Run the number against your own tier before you switch anything.

    Here is what the six did in four weeks.

  • 612 tasks finished with nobody watching
  • 47 tool calls blocked before they ran
  • 89 handoffs rejected for a missing source on a number
  • 0 irreversible actions taken without my approval
  • 3 hours 40 minutes from install to the first agent doing real work
  • My re-derivation rate went from about 1 number in 3 down to 1 in 22
  • I am not going to show you a P&L. Anybody who does is selling something.

    What I will show you is the layout that kept the crew from setting money on fire, which is the part that decides whether any of this earns anything.


    What Stopline Engineering means

    Every seat is defined by what it cannot do, and everything irreversible stops at you.

    That is the whole method. Two rules, and they fight the same failure.

    An agent that can both decide and execute has nowhere for a mistake to stop. A crew where each seat has a written stop line has a stop at every handoff, and one final stop in front of you.


    TL;DR

    One agent with full permissions is a fast intern holding your credit card.

    Six narrow agents work because none of them can both make the call and press the button.

    Station 3 is the system. Everything before it is setup, everything after it is scale.


    Why one agent fails

    The failure is structural, not intellectual.

    When the same context window holds the idea and the button, the model has argued itself into the action long before it reaches the tool. Nothing in that prompt is rewarded for refusing.

    You do not fix that with a bigger model. You fix it by taking the button away from whoever had the idea.

    Six is not a product limit and it is not a magic number. Grok Bot lets you create as many Bots as you want, up to 50 Bots and group chats combined per account, and xAI's own docs tell you to think twice before adding another one.

    Six is the smallest set where every dangerous capability sits in a different chair from the reasoning that wants to use it. Start with two. Add the fourth when the third gets boring. Stop the moment a new seat has nothing to refuse.

    One thing to know before you copy the shape. On Grok Bot every Bot shares one persistent cloud computer tied to the account rather than to the Bot. That is what lets them hand files, browser sessions and logins to each other, and it is also why you keep sensitive credentials off that machine.


    The roles

    SEAT        OWNS                          STOPLINE
    ---------------------------------------------------------------------
    SCOUT       scans literature, patents     never ranks a candidate
                builds the candidate list
    
    CHEM        structures, binding scores    never calls anything promising
    
    TOX         safety flags, off-targets     never runs an assay
                the verdict
    
    BENCH       runs the assay, logs results  never acts without a TOX pass
    
    SCRIBE      evidence, raw data, protocol  never touches the result itself
                versions
    
    CHIEF       routes, sets the objective    never does the science

    Read down the right column. That is the design.

    The left column is the part everyone writes first and the part that matters least.


    Station 1 - Get one agent alive

    Kimi Code CLI is the hands. It reads and edits files, runs shell commands, fetches pages, and picks its own next step from what it finds. The CLI is free and MIT licensed.

    curl -fsSL https://kimi.com/install.sh | bash
    
    kimi
    /login
    /model            # pick Kimi K3

    K3 earns the pick here. 2.8 trillion parameters, roughly 104 billion active per token across 896 experts, a 1,048,576 token context window, text, image and video in one model. Weights are open, pricing is $3 in and $15 out per million tokens.

    The context size is not a spec sheet flex. An agent that holds a full overnight session without compaction still remembers its own limits at 4am.

    Do not write anything yet. Give it one real job by hand and watch.

    > pull the last 200 candidates from ./feed, drop everything that fails
      the liquidity filter, and write what survives to shortlist.md

    Note where it stalls, what it guesses at, and what it touches that you did not expect.

    That third list is your deny list.


    Station 2 - Write charters, not prompts

    A prompt says what to do this time. A charter says what the seat owns, what good output looks like, and where the seat stops.

    In Kimi Code this is a skill file that loads on its own when the task matches.

    ---
    name: risk
    description: Verdict on every proposal before anything executes
    whenToUse: When a proposal from QUANT needs a go or no go
    ---
    
    # RISK Seat
    
    ## Owns
    Sizing, exposure, correlation. The verdict.
    
    ## Stopline
    Never places, cancels or modifies anything. Never argues the idea.
    
    ## What good looks like
    PASS, CUT or KILL on every proposal, with the limit that triggered it
    named explicitly.
    
    ## Hard limits
    Single position never above 4% of book.
    Correlated cluster never above 9% of book.
    Nothing new inside 20 minutes of a scheduled release.
    
    ## Rules
    Argue the size, never the thesis.
    If two limits conflict, take the tighter one and say so.
    If the proposal has no evidence block, return KILL and name the missing
    field. Do not go find the number yourself.
    Media image

    That last rule separates a crew from a group chat.

    RISK is forbidden from repairing sloppy work upstream. A missing source kills the proposal and SCOUT finds out. You fix inputs, not symptoms.

    I wrote four charters before one survived a week without me patching it mid-session. The system is not hard. The job description is.


    Station 3 - The reversible line

    This station decides whether you can shut the laptop.

    Sort every action the crew can take with one question. If this goes wrong, can I undo it in under a minute without talking to anyone?

    REVERSIBLE                        IRREVERSIBLE
    runs alone, all night             stops, waits for you
    
    read a feed                       place an order
    score a candidate                 cancel a resting order
    rank a shortlist                  move funds
    draft a message                   send anything
    compute exposure                  publish anything
    label and cluster                 delete a record
    write to a scratch log            revoke a key
    Media image

    Two traps.

    Cancelling is not reversible. A cancel that fires on a fill you did not see leaves you naked, and there is no un-cancel.

    Reading is not always safe either. A read that burns your rate limit in a volatile window costs you the next fifty reads.

    Now enforce it in code, never in a prompt. Kimi Code has lifecycle hooks that run local commands at key points and can gate a risky tool call before it fires.

    {
      "permissions": {
        "allow": ["read_*", "grep", "mcp__feed__*", "mcp__db__select_*"],
        "deny":  ["mcp__venue__transfer", "mcp__db__delete_*", "key_revoke"],
        "ask":   ["mcp__venue__order_*", "mcp__mail__send", "publish_*"]
      },
      "hooks": {
        "preToolUse": "./guards/check_reversible.sh"
      }
    }

    deny is not ask. The deny list is for things you never want to approve at 3am while half awake, because you will.

    One more rule I would defend hard. Give the ask queue an expiry.

    A card nobody answers in fifteen minutes dies and logs itself as expired. Missing an opportunity is cheap. Taking one against context that moved six hours ago is not.


    Station 4 - Evidence or it did not happen

    Nothing moves between seats without a source.

    Every number carries where it came from and when it was read. Every action writes a recording of what it did.

    {
      "claim": "24h volume up 3.1x versus 30d median",
      "value": 3.14,
      "source": "mcp://feed/ohlcv?sym=X&tf=1h",
      "read_at": "2026-08-24T01:14:07Z",
      "recording": "runs/9f2c/vol_check.cast",
      "produced_by": "quant"
    }

    The reason is not paperwork. It is that I stopped double checking.

    Before this rule I re-derived about one number in three by hand, because I could not tell a retrieved figure from a confident invention. That tax never shows up in anyone's demo video and it eats the whole time saving.

    After the rule an unsourced number is a schema violation rather than a judgment call. It bounces before it reaches me.

    Kimi Code takes video input, so you can drop a screen recording into the session and the agent reads it. Recordings become a working artifact instead of a folder nobody opens.


    Station 5 - Wire the crew together

    Kimi Code ships built in coder, explore and plan subagents that run in isolated contexts. The isolation is the point. Each keeps its own working memory, so the main thread does not fill with somebody else's intermediate mess.

    Give the crew an objective, not a checklist.

    /goal Cut the candidate list to five by Friday.
          SCOUT shortlists, QUANT scores, RISK rules on size.
          SCRIBE attaches evidence to every number.
          Nothing executes without me.

    Then enforce the org chart in the router rather than in the prompts.

    def route(task, board):
        seat = match_seat(task.kind)
    
        if seat == "execution" and not board.has_verdict(task.id, "PASS"):
            return park(task, reason="no risk verdict on file")
    
        if not board.evidence_complete(task.id):
            return bounce(task, to="scribe", reason="evidence incomplete")
    
        return dispatch(seat, task, board.slice_for(seat))

    board.slice_for(seat) is the quiet hero. RISK reads numbers and exposure, never the thesis prose. It cannot be talked into anything because it never receives the argument.

    Connect tools once with /mcp-config. The marketplace shows a trust level for each install before you accept it. Read it. A crew is only as safe as the least trustworthy thing you plugged into it.

    Add the sixth seat after five worked without it. Every seat added early is a seat you debug instead of use.


    Station 6 - Let it run without you

    Kimi Code is the interactive session. The Agent SDK turns the crew into something that runs on a schedule rather than on your attention.

    The SDKs reuse the same CLI configuration, tools, skills and MCP servers, and surface approvals and tool calls as events you can render in your own UI.

    from kimi_agent_sdk import Agent, Session
    
    session = Session(
        work_dir="./crew",
        skills=["scout", "quant", "risk", "scribe"],
        mcp_servers=["feed", "db", "venue"],
    )
    
    result = Agent(session=session).run(
        task="Run tonight's shortlist. Stop at anything irreversible.",
        require_approval=["mcp__venue__order_*", "mcp__mail__send"],
    )
    
    for event in result.events:
        if event.type == "approval_requested":
            push_card(event)      # your gate, your UI, your expiry
    Media image

    Pair it with scheduled tasks on kimi.com and the crew works nights.

    That is the Grok Bot property, rebuilt on parts you own.


    Guards

    Reproduce these or the crew collapses back into one agent wearing six hats.

  • One seat, one mission, and the mission fits in a sentence
  • Write the stopline before anything else in the charter
  • The seat that reasons never holds the button
  • No seat repairs another seat's bad input, it rejects it
  • RISK reads numbers, never the thesis prose
  • Execution requires a timestamped PASS, enforced in the router
  • Sort every action into reversible and irreversible before writing code
  • When unsure which bucket, it is irreversible
  • Cancels count as irreversible
  • Ask cards expire, they do not queue
  • Every number carries a source and a read time, or the handoff bounces
  • Add a seat after the job worked without it

  • What I haven't tested

    Four weeks and six seats. I have no data on whether coordination survives at ten or twenty.

    I have not tested a self hosted K3. Everything above went through the API, so my cost numbers say nothing about what open weights cost on your own hardware.

    All six seats run the same base model, which is a shared blind spot I have not measured. The honest fix is a different model in the RISK chair. I have not done it.

    I have not stress tested the hooks against an agent actively routing around them. My guards assume a cooperative agent making mistakes, not an adversarial one.

    Every seat trusts the same data source the same way, so one poisoned feed compromises SCOUT, QUANT and RISK at once with no disagreement to catch it.

    Numbers above are from my logs on my workload. Run your own.


    The playbook

  • Install Kimi Code, log in, pick K3, run one job by hand and watch
  • Write down every place it stalled, that list is your first charter
  • Write charters as skill files, stopline first
  • Give the button to a seat that never had the idea
  • Sort actions into reversible and irreversible, be paranoid
  • Put the split in permissions and a preToolUse hook
  • Make evidence a schema so bad input fails instead of getting interpreted
  • Enforce the verdict in the router, not in a prompt
  • Connect tools with /mcp-config, check trust levels
  • Give the crew a goal, not a checklist
  • Add seats one at a time, after the last one got boring
  • Wrap it in the Agent SDK, schedule it, check the gate in the morning

  • The point

    The single agent was not stupid. It was unaccompanied.

    A crew costs more per decision and takes longer to answer, and I would take that trade every time, because what I was buying was the ability to shut the laptop.

    You do not get that from a bigger model. You get it from an org chart where every seat has a stopline, and the last one is you.


    If you want more breakdowns like this, I post one every couple of days on Telegram and X. Both free.

    X - https://x.com/gippp69

    Telegram - https://t.me/GipArcAI

    Actions
    What You Can Do
    • Export as PDF or Markdown
    • Batch Export to Notion
    • Bookmark & Highlight
    • LinkedIn & Instagram Carousel Maker
    Create Free Account

    Includes 7-day Premium trial

    Advertisement