DEV Community

PEPPERCORN
PEPPERCORN

Posted on

[Day 18] I set up a company of AI agents with Claude Code — and a local LLM (qwen) joined as the caretaker

Intro

Day 18!

In Day 17 I audited 33,469 of my own AI conversations. Building on that, today I set up a company of cats to run my task management 🐱

What I used: Claude Code / DGX Spark / Slack & Notion.


Today's plan

  • What I want: hand the annoying parts of task management to a company of cats
  • Approach: build in order — the org, the task flow, the ledger, AI collaboration rules, then deploy to both machines
  • Done means: every morning, Necco and I pick "today's three tasks"
  • Result:
    • A company of six cats. Inbox = Slack, source of truth = Notion, memory = the ledger
    • I inventoried my projects: 80 of them. All in the ledger now
    • One page of collaboration rules for Claude Code / Codex / qwen

① Built the org

Role-based staff (subagents), all named "___-neko" (neko = cat).

Name Role
Necco Chief secretary: morning meeting, task triage, routing, ledger upkeep
Shirabe-neko Research
Tsukuri-neko Implementation
Mekiki-neko Review (read-only)
Soroban-neko Number crunching
Rusuban-neko Caretaker: a local LLM (qwen) living on the DGX. Summarizes, sorts, and tags incoming files

Before building, I looked at prior art. An individual delegating their own management to AI seems established as the AI Chief of Staff pattern.

The staff internals come tomorrow in Day 19.


② Built the task flow

A task pops up → one line into Slack from my phone (3 seconds)
             → [morning meeting] Necco sweeps the inbox
             → cleans it up, adds a due date, registers it in Notion
             → proposes "today's three"
Enter fullscreen mode Exit fullscreen mode

Think of something, drop one line in Slack. By morning it's in Notion. An evening "done: ___" one-liner feeds the next morning's ledger update and task close-out.


③ Built the ledger

What's the ledger (LEDGER.md)? One file listing every project, so Necco can answer "where was that project again?" instantly.

For the initial data, I inventoried both of my machines. The count: 80 projects. I had no idea it was that many...


④ Set the AI collaboration rules

Instead of deciding "which AI gets this job" every time, it's now one page:

AI Role
Claude Code Lead (design, planning, review, conversation)
Codex CLI Routine subcontractor (implementation)
qwen (local LLM) Batch pre-processing (summarize, sort, tag — stays on the DGX)

Rusuban-neko is the DGX side of this rule. Zero API cost, and the data never leaves the house.


⑤ Deployed to both machines

The company is a git repository. I gave it a private GitHub remote and cloned it onto the DGX. An install script places the staff and skills into ~/.claude/.

Now either machine can summon the same company.


The first morning meeting

I opened Claude Code in the office and ran the first morning meeting.

The one-liner I had tossed into Slack the night before was cleaned up and registered in Notion by Necco. This is genuinely comfortable.


The full picture

Chief secretary Necco (Claude Code)
Staff Shirabe / Tsukuri / Mekiki / Soroban (subagents)
Caretaker Rusuban-neko (local qwen on the DGX)
Inbox Slack
Source of truth Notion
Memory the ledger file (80 projects)
Layer Role
Slack The inbox — ephemeral, free-form, 3 seconds to post
Notion The source of truth — same as before
Ledger The company memory — what exists, where, in what state
secretary/                   ← the office (cloned on both machines)
  CLAUDE.md                  ← Necco's persona, house rules, meeting runbook
  LEDGER.md                  ← the ledger (80 projects)
  input/                     ← file inbox (pre-processed by Rusuban-neko)
  agents/                    ← staff definitions (source of truth)
  skills/                    ← skills (source of truth)
  install.sh / install.ps1   ← places staff & skills into ~/.claude/
Enter fullscreen mode Exit fullscreen mode

Notion stays; only the entrance changed. Necco does the formatting and registering.


Today's takeaways

  • Separate the inbox from the source of truth: Notion felt tedious because it was doing both jobs
  • Keep the company's memory in git: AI auto-memory splits across two machines
  • Default patterns are fine: borrow the shape from prior art, fit the details to your own setup

The details

The morning meeting runbook (8 steps)

  1. git pull (bring in the other machine's updates)
  2. Rusuban-neko pre-processes anything new in input/
  3. Close out yesterday's three (update Notion statuses)
  4. Sweep the Slack inbox → turn into TODOs → register in Notion
  5. Notion + calendar + inbox + ledger → propose "today's three"
  6. Reflect the evening one-liners into the ledger
  7. Post the final digest to Slack
  8. git push

Git sync (1 and 8) and close-out (3) are baked into the runbook. The human only "posts" and "answers".

Pitfalls I mapped out beforehand

Pitfall Countermeasure
The ledger goes stale The evening one-liner habit
AI memory splits across two machines Permanent knowledge goes into git-tracked files; auto-memory is treated as cache
Forgetting to sync the two machines pull / push are steps 1 and 8 of the runbook
Work calendar isn't visible Fill in verbally at the morning meeting, for now
No closed loop on task completion The meeting starts with closing out yesterday's three

Two-machine sync

  • Staff definitions (agents/) and skills (skills/) live in the repository as the source of truth
  • install.sh (Linux) / install.ps1 (Windows) place them into ~/.claude/
  • Adding a staff member = commit → pull on the other machine → run install

Prior-art notes

The common rule: always-on rules → CLAUDE.md / occasional methods → skills / context-heavy work → subagents. This build follows it too.


Tomorrow: Day 19

Staff day — the four subagent definition files, plus getting Rusuban-neko (the local LLM) running as a resident service.

Thanks for reading!

Top comments (0)