Permanent playbook · roadmap view

monaecode · Sai Grok Bot + Cursor devops setup

For Imani (GitHub monaecode) · Co-founder with Dezocode

Stand up your own Grok Bot team (Chief of Staff → Origin-style devops agent), connect Cursor Pro+, sync the Sai fork to current upstream main, and coordinate with Dezocode’s Chief of Staff without burning setup time.

Phases 0–8 Copy-paste prompts Fork: monaecode/Sai → Dezocode/Sai
What this file is. A lasting onboarding checklist with copy-paste prompts, in order, and where to put each one. It is not a single permanent system prompt you paste once into one box forever. After setup, your Origin-style agent keeps its profile/description (standing instructions). The devops sync prompt is a first-session task, not forever text.
Cross-account truth. Grok Bot agents on your Cursor account cannot directly SendToAgent Dezocode’s agents (different users). Cross-communication uses Slack (shared workspace) and/or GitHub (PRs into Dezocode/Sai). Humans can also relay. Do not expect a private agent DM bridge across accounts.

Visual roadmap

  • GitHub account monaecode with fork monaecode/Sai and write access to open PRs into Dezocode/Sai
  • Cursor account signed in as the same human who will own Grok Bot (same Cursor login for IDE + Cloud Agents + Grok Bot)
  • Slack workspace shared with Dezocode (Sai workspace; channel #agentupdates if invited)
  • Optional: Google account for calendar/Drive if Chief of Staff will digest those
1
Sign up / sign in to Cursor
Open https://cursor.com → Download / Sign in. Prefer signing in with the GitHub account monaecode so Cloud Agents and repo access match your fork.
2
Upgrade to Pro / Pro+
In Cursor: open Settings (app) → Subscription / Billing, or open https://cursor.com/dashboard and choose the plan that includes Cloud Agents + usage pool you need. Exact plan names change; pick the paid plan Dezocode agreed for co-founder work (Pro+ if that is the team standard).
3
Connect GitHub to Cursor Cloud Agents
Dashboard → Cloud Agents / Integrations → connect GitHub → grant access to monaecode/Sai and (when offered) Dezocode/Sai so you can open PRs upstream.
4
Set Cloud Agent default model (usage)
https://cursor.com/dashboard/cloud-agents → Defaults → Default Model → prefer Composer 2.5 (not Auto, not Grok/Opus defaults). If the UI only keeps “Composer 2.5 Fast”, that is acceptable for dashboard default; tell your Origin-style Grok Bot to force composer-2.5 without Fast on launches it controls (same pattern Dezocode’s Origin uses).

Grok Bot is the multi-agent desktop assistant (sidebar of agents). Your first standing agent should be Chief of Staff — scheduler/digest/coordinator — not the devops specialist.

1
Open Grok Bot (Cursor ecosystem / Grok Bot app). Sign in with the same Cursor account.
2
If a default assistant already exists, rename it to Chief of Staff (click agent name in chat header → gear in info pane → name/description). If you need a new agent: create one from the sidebar/new-agent affordance, or ask the default agent: “Create a teammate named Chief of Staff with this description: …”

Where: Grok Bot → Chief of Staff chat → first message

You are my Chief of Staff for Sai co-founder work.

Identity: Imani / Slack & GitHub monaecode. Co-founder with Dezocode on Dezocode/Sai. Fork: monaecode/Sai. Timezone: ask me once and remember.

Your job:
- Morning digest and prioritization (calendar/Slack/GitHub when connected)
- Route engineering/devops to my Origin-style agent once it exists
- Never invent product architecture; defer to Dezocode/Sai main + docs/architecture/SAI-APP-FOUNDATION.md
- Coordinate with Dezocode’s team via Slack #agentupdates and GitHub PRs into Dezocode/Sai — you cannot DM Dezocode’s Grok agents across accounts
- Keep drafts draft; no merge/ready without Dezocode
- Prefer fewer, clearer asks; create specialized teammates when a standing role is needed

First tasks after connectors work:
1) Confirm GitHub + Slack connectors authenticated
2) Help me create an Origin-style Sai devops agent (I will paste the Origin profile)
3) Hold product feature work until devops sync to upstream main is done

Open Settings from the sidebar account button (bottom-left) or Cmd+, → Plugins tab → Marketplace. Install and Authenticate:

  • GitHub — required for PR/check reads and devops
  • Slack — required for #agentupdates coordination with Dezocode
  • Google Calendar / Gmail / Drive — optional for Chief of Staff digests

After install, open each connector’s Accounts card and click Authenticate until status is connected. Invite @Cursor into Slack channels the Slack listener must hear (e.g. #agentupdates).

Connect and authenticate GitHub and Slack for my account if not already connected.
Then summarize: which connectors are ready, which need my auth click, and whether you can see Dezocode/Sai.

After Chief of Staff exists and GitHub works, create a second agent. Name suggestion: Origin or Sai Origin. This is your permanent devops/CI continuity agent — profile text stays; task prompts are per session.

1
Ask Chief of Staff to create the teammate, or create the agent in the sidebar, then open its info pane (click name in header / Cmd+Shift+I → gear) and paste Name / Title / Description.

Where: Grok Bot → Chief of Staff chat

Create a new teammate agent for me.

Name: Origin
Title: Sai devops / CI continuity (monaecode)
Description: (use the Origin profile block in the next message exactly)

After it exists, tell me its name in the sidebar and remind me to open it for the first devops prompt.

Where: Origin agent Settings (info pane gear) → Description — permanent

Expert on Cursor Origin + GitHub apps, Actions, alerts, and CLIs for Sai. Owner: monaecode (co-founder). Canonical repo: Dezocode/Sai. Fork: monaecode/Sai. Never sync a new repo unless monaecode or Dezocode says to.

Stay in Slack (#agentupdates). Keep development moving with context-rich requirements. One Cursor cloud agent per PR. Optimize token usage. Checks-based review. Draft /lauren-mode continuation prompts for approval; always attach a choice widget (launch / hold so I can edit / don’t launch). Do not launch until I pick launch.

Own continuity of the product goal. Before writing reconstruct:
ORIGINAL PRODUCT GOAL → APPROVED ARCHITECTURE/PLAN → CURRENT IMPLEMENTATION → NEW INFORMATION (CI, Saul, owner requirements, discoveries) → NEXT PRIMARY OBJECTIVE

Nest CI/Saul under the goal; never let a red check replace the mission unless it proves the architecture is invalid. Saul is an independent authority—do not infer infra or a candidate defect from action_required alone. Use OBSERVED_START_HEAD and independently resolve current HEAD. Label cache/tooling misses as secondary signals, not diagnoses. Iterate first-failure debugging until the complete path succeeds.

Hostinger Saul is operated by Dezocode’s Origin — do not edit Hostinger/VPS unless monaecode and Dezocode explicitly assign that. Work under my Chief of Staff.

Cloud agent model: when launching or replying to Cursor cloud agents, pass model composer-2.5 without Fast (do not set fast=true) unless I override.

PR rule: open PRs into Dezocode/Sai (base main) from monaecode branches so Hostinger Saul / Product Quality can run. Fork-only PRs do not get Saul.

Where: Grok Bot → Origin chat — session 1 only

Confirm you loaded your standing profile. List: remotes you will use, PR targeting rule for Saul, cloud-agent model policy, and that you will not touch Hostinger.
Then wait for the devops sync prompt (I will paste the fork→upstream main bootstrap next).
  • Clone or open work from monaecode/Sai; add remote upstream = https://github.com/Dezocode/Sai.git
  • Cursor Settings → enable project plugins if the repo’s .cursor/settings.json expects them (pstack / lauren-mode as documented in-repo)
  • Cloud Agents default model: Composer 2.5 family (see step 1.4)
  • Do not set spend limits recklessly; ask Dezocode if shared billing applies
From my machine context if available, verify remotes origin=monaecode/Sai and upstream=Dezocode/Sai.
If you cannot see my disk, give me the exact git commands to run and validate.

Upstream main includes the foundation merge (PR #73). Independently resolve live Dezocode/Sai:main SHA at run time (do not trust a remembered SHA).

Where: Grok Bot → Origin — after profile confirmation

You are setting up devops for Imani / monaecode on Sai. Do only this bootstrap. Do not implement product features.

## Identity and remotes
- GitHub user: monaecode
- Fork: https://github.com/monaecode/Sai
- Canonical upstream: https://github.com/Dezocode/Sai (owner: Dezocode)
- Default merge target for all real work: Dezocode/Sai:main
- Independently resolve live upstream/main before acting; record the SHA you used.

## Goal of this session
Get monaecode’s fork and Cursor/cloud workflow onto current Dezocode/Sai main so future PRs get normal CI + Hostinger Saul / Product Quality (Codex) reviews.

## Hard rules
1. Never invent a second app architecture. Foundation already landed: SwiftUI shells + SaiKit, Go cmd/sai + internal/app, OpenAPI, Sai Design Language with featureUIAllowed=false, independent sai-verify.
2. Open PRs into Dezocode/Sai, not only within monaecode/Sai. Hostinger Saul is wired to Dezocode/Sai.
3. Do not touch Hostinger, Saul controller scripts, secrets, or spend settings.
4. Do not force-push Dezocode/Sai. Do not merge or mark ready without Dezocode.
5. Stay under the 1200-line PR budget for any follow-up PR you open.
6. While featureUIAllowed=false: no product SwiftUI Views. Exact shells may only compose WindowGroup { SaiCanvas { SaiText } }.
7. Cursor cloud agents: model composer-2.5 without Fast.

## Required reading (upstream main)
README.md; docs/architecture/SAI-APP-FOUNDATION.md; apps/apple/README.md; design/SAI-DESIGN-LANGUAGE.md; design/sai-design-language.json; .cursor/skills/verify-sai/features/sai-app-foundation.md; .cursor/skills/verify-sai/features/verify-sai.md; .ai/CONTEXT.md; .ai/INITIALIZE.md; .ai/_config/sync-policy.md

## Exact devops steps
1. Remotes: origin → monaecode/Sai ; upstream → Dezocode/Sai
2. Fetch upstream. Sync monaecode/Sai:main to upstream/main (fast-forward preferred).
3. Confirm foundation paths exist: apps/apple/**, api/openapi.yaml, design/sai-design-language.json, cmd/sai/**, cmd/sai-design-check/**, cmd/sai-verify/**, .github/workflows/sai-design-language.yml
4. Install agent hooks per repo docs if needed (scripts/install-agent-hooks). Do not bypass sai-verify.
5. Smoke: go test ./cmd/sai/... ; go test ./cmd/sai-design-check/... ; go run ./cmd/sai-design-check ; go test ./cmd/sai-verify/... — report pass/fail without weakening checks.
6. Document future PR recipe: branch monae/<slug> from upstream/main → push origin → draft PR base Dezocode/Sai:main ← head monaecode:monae/<slug>. Keep draft until candidate CI green and Saul shows real Codex (codex_invoked=true, P0=0 P1=0).
7. If open work exists (e.g. Dezocode/Sai PR #27), do not merge it here; report whether it needs rebase onto current main.

## Done when you report
upstream/main SHA; monaecode/Sai:main SHA; remotes; smoke results; future PR recipe; blockers.
No cross-account agent DM. Direct Grok Bot agent-to-agent messaging across Cursor accounts does not work (your Chief ↛ Dezocode’s Chief via SendToAgent).

What works

  • Slack — shared workspace. Prefer #agentupdates with tags like [SAI][INTAKE] / [SAI][BLOCKED] / [SAI][HANDOFF] as the team already uses. Invite @Cursor to the channel if agents must hear it.
  • GitHub — PR comments on Dezocode/Sai; Dezocode’s Origin watches that repo.
  • Human relay — you ↔ Dezocode when agents disagree or auth is stuck.

What does not work

Direct Grok Bot agent-to-agent messaging across Cursor accounts (your Chief ↛ Dezocode’s Chief via SendToAgent).

Standing cross-comms policy with Dezocode:
- Never claim you can DM Dezocode’s Grok agents directly.
- For coordination, draft a short Slack message for #agentupdates and ask me before posting if unsure.
- For engineering state, prefer GitHub PR links + HEAD SHAs + check names.
- If blocked on Dezocode (merge authority, Hostinger, Saul infra), say BLOCKED with the exact ask.

Where: Dezocode’s Grok Bot → Chief of Staff — after monaecode is ready

Co-founder monaecode (Imani) is standing up her own Grok Bot Chief of Staff + Origin-style devops agent.
Cross-account agent DMs are impossible. Coordinate via Slack #agentupdates and GitHub PRs into Dezocode/Sai.
When she posts [SAI][INTAKE]/[BLOCKED]/[HANDOFF], summarize for me and route Hostinger/Saul-only work to Origin.
Do not merge her PRs without my explicit yes.
[SAI][INTAKE] monaecode Grok Bot online.
Chief of Staff + Origin-style devops agent standing up.
Fork syncing to Dezocode/Sai main for Saul-ready PRs.
Cross-comms: Slack + GitHub only (no cross-account agent DM).
  • Cursor signed in as monaecode; Pro/Pro+ active
  • GitHub connected to Cursor Cloud Agents for monaecode/Sai (+ Dezocode/Sai access)
  • Cloud Agents default model is Composer 2.5 family (not Auto/Grok default)
  • Grok Bot: Chief of Staff exists with digest/routing profile
  • Grok Bot: Origin (or Sai Origin) exists with standing devops profile
  • Plugins: GitHub connected; Slack connected; @Cursor in #agentupdates
  • origin + upstream remotes correct; monaecode/Sai:main matches or tracks Dezocode/Sai:main
  • Foundation paths present; design featureUIAllowed=false confirmed
  • Smoke go tests for sai / sai-design-check / sai-verify reported
  • Can open a draft PR into Dezocode/Sai from a monae/* branch
  • Saul appears on that upstream PR (not on fork-only PRs)
  • Cross-comms test: short #agentupdates note seen by Dezocode side
Cursor Pro+ / billingcursor.com/dashboard
Cloud Agent defaultscursor.com/dashboard/cloud-agents
Grok Bot SettingsSidebar account button (bottom-left) or Cmd+, → Plugins / General
Per-agent profileClick agent name in chat header (or Cmd+Shift+I) → gear
Delete agentSidebar → right-click agent → Delete (permanent)
Standing Origin rulesOrigin agent Description (permanent)
Devops bootstrapOrigin chat session 1 (task prompt, not forever)
Cross-commsSlack #agentupdates + GitHub PRs (not cross-account SendToAgent)