Product

Claude Code made one person faster. Coshell makes the whole team work with the agent together.

One shared live session where your whole team prompts the same coding agent, on the same files, terminal, and browser.

AOrders dashboard for acme-webARate limiter rolloutADev server on the VMDProject pending statusOCount to 120
Open
Who can access
Openeveryone on the drive
SharedTom, Lena
Privatejust me
Orders dashboard for acme-web
feat/orders TRLF
Add the orders overview to the dashboard: revenue today, order count, and average order value, then the recent orders table.Priya Nair
Explored4 reads
EditOrdersDashboard.jsx /src/pages/+77−0
Editindex.css /src/+33−0

Overview is in with the three stat cards and the recent orders table. Live on http://localhost:5173.

2 Changed files+110 −0
src/pages/OrdersDashboard.jsx+77−0
src/index.css+33−0
Can the stat cards stretch to equal height? The average order card is shorter than the others.Lena Fischer
Editindex.css /src/+4−1

Cards stretch now. The grid uses align-items: stretch and each delta line is pinned to the bottom with margin-top: auto.

Add a 7 day / 30 day toggle above the chart. Default to 7 days.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+31−4
Shellbun test

Added the toggle. 30 days aggregates by week and the axis relabels. 8 tests pass.

Move the delta onto the card’s top row, right aligned against the label.Priya Nair
Editindex.css /src/+6−2

Delta sits on the top row now, right aligned, so the numbers line up down the column.

Use var(--brand) for the Export button, not a hardcoded hex.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+1−1
1 prompt queuedClear queue
Lena FischerMake the Refunded pill amber. Red reads like an error.
Claude Sonnet 5
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Rate limiter rollout
feat/rate-limit TR
Start the rate limiter plan. Token bucket per API key, 100 a minute.Priya Nair
Explored6 reads
EditrateLimit.ts /src/middleware/+64−0
Shellbun test

Token bucket middleware is in with 12 tests. Step 1 verified.

Keep the bucket in Redis, we run three replicas.Tom Reyes
EditrateLimit.ts /src/middleware/+22−9

Moved the bucket to Redis with a Lua script so the check is atomic across replicas. 14 passing. Steps 2 and 3 verified.

Execute step 4. Start with the webhooks route, I already reviewed the limiter.Lena Fischer
ReadrateLimit.ts
Editwebhooks.ts /src/routes/+14−2
Shellbun test

Webhooks now share the limiter. 16 passing. Marking step 4 verified and moving to the flag rollout.

Thinking
Claude Sonnet 5
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Dev server on the VM
main TRLF
Start the dev server on this VM so the team can preview the orders dashboard.Priya Nair
Shellwhich node npm bun

Node.js isn’t installed on this VM, so I can’t start the dev server yet. I can install it with the system package manager and then run it. Want me to?

Yes, but use the LTS build, the API image pins Node 22.Lena Fischer

Understood, Node 22 LTS from NodeSource.

go ahead and install it and get the server started.Tom Reyes
Shellcat /etc/os-release 2>/dev/null | head -5; which apt-get
Shellsudo apt-get update -qq && sudo apt-get install -y -qq nodejs npm
Shellnode --version && npm --version
Shellnpm install
Shellnpm run dev &

Server is running at http://localhost:5173/, Vite dev server ready in 284ms.

Big Pickle
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Project pending status
feature/discounts LFTR
What is the status of the discounts branch?Tom Reyes
Shellgit log --oneline feature/discounts -8

Eight commits since main: the coupon model, the checkout hook, and a migration. No PR yet.

Do we have a written plan for the discounts work?Priya Nair

No. You have no PLAN, TODO, or roadmap file.

Your closest thing to a plan is .coshell/review/dod.md: integer cents, handled promises, no focused tests, no dead exports.

Draft one from the commits and the dod file, then open it in the Plan tab.Lena Fischer
Readdod.md
Editdiscounts.md /docs/plans/+48−0

Drafted docs/plans/discounts.md with five steps. It is waiting for approval in the Plan tab.

Muse Spark 1.3 Free
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Count to 120
main LFTR
Quick sanity check on Big Pickle before we let it near the repo. Say hi.Tom Reyes

Hi. Big Pickle here, ready when you are.

Without using any tools, list the first ten primes.Priya Nair

2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

Without using any tools, count from 1 to 120, one number per line, then stop.Lena Fischer

1
2
3
4
5
6
7
8
9
10
11
12

Thinking
Big Pickle
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Chat2PlanDeep ReviewBrowserReview
Morning. Plan is approved, I’m starting the orders dashboard on acme-web.8:52
TR
Tom Reyes8:55I’ll take the limiter then. Which drive?
office-mac-mini has Redis running, use that one.8:55
LF
Lena Fischer9:10Back online. Anything blocked?
TR
Tom Reyes9:11Nope. OrdersDashboard.jsx is Priya’s, limiter is mine, webhooks are free if you want them
LF
Lena Fischer9:12Taking webhooks.
Lena the Refunded pill should be amber, not red. I queued a prompt for it9:30
TR
Tom Reyes9:41Picking up rateLimit.ts for the webhooks route
LF
Lena Fischer9:42Tom I already touched the 429 path there, check the overlap note before you push
Step 4 in the plan is mine, I’ll ping when the tests are green
Sounds good. I’ll review after, then we roll the flag.9:44
Mention
CScoshellassistant
TRTom Reyeson the drive
LFLena Fischeron the drive
OrdersDashboard.jsxfile
index.cssfile
rateLimit.tsfile
webhooks.tsfile
App.jsxfile
Rate limiter rolloutDetailsWorking
Spec approvedPlan approvedExecuting 3/5

Goal

Protect /v2 from bursty API keys without slowing normal traffic. One key should never be able to starve the others.

Approach

A token bucket per API key, 100 requests per minute, stored in Redis so all three replicas share state. Over-limit requests get a 429 with a Retry-After header. Ship behind the rate_limit_v2 flag and roll out gradually.

Constraints

  • No new dependencies beyond ioredis, which we already run.
  • p99 latency budget: +2 ms on the hot path.
  • Existing tests stay green at every step.

Verification

bun test after every step. Load test with 1k keys before the flag moves to 50%. Watch 429 rate and p99 in the dashboard for a day at 10%.

Steps
Token bucket middleware with testsVerified
Add
Redis-backed bucket, atomic across replicasVerified
Add
Retry-After header on 429 responsesVerified
Add
Apply the limiter to /v2/webhooksLena, in progress
Add
Roll out behind the rate_limit_v2 flagWaiting
Add
on step 5, Roll out behind the flag
PN
Priya Nair2m
Roll out to 10% of keys first, then 50%. Add both as substeps.
LF
Lena Fischernow
Agreed, updating the step before the agent gets there.
Deep Review
feat/orders against main
Run review
No review yet. Run one when the branch is ready.
HighExport button colour is hardcodedOrdersDashboard.jsx:41
The Export button sets #5B4CF0 inline while every other control reads var(--brand). Tom’s follow-up prompt fixes it; verify once that edit lands.
Send fix to agentDismiss
MediumNothing tests the stat cardsOrdersDashboard.jsx
No test asserts that the three stat cards render or that a delta shows its direction. A render test with the card labels would catch a regression.
Send fix to agentDismiss
LowUnused importApp.jsx:3
useMemo is imported and never used.
Send fix to agentDismiss
Port 5173
Dev servers on this drive
Port 5173vite
Port 3000next
Port 8080api
Port...ShareInspect
acme
DashboardOrdersCustomersSettings
Orders
Last 7 days · updated just now
FilterExport
Revenue today$18,420+12% vs last week
Orders342+8%
Average order$53.86−3%
Revenue, last 7 days7 days30 days
MonTueWedThuFriSatSun
OrderCustomerStatusTotal
#10428Maya Osei$128.40
#10427Theo LindqvistRefunded$64.00
#10426Ada Mensah$212.75
#10425Ravi ShankarPending$39.90
Tom
3 Changed files+112 −3
src/pages/OrdersDashboard.jsx+77−0
38 <div className="toolbar">
39+ <button className="btn">Filter</button>
40+ <button className="btn primary" style={{ background: '#5B4CF0' }}>
41+ Export
42 </div>
src/index.css+33−0
112+ .stat { border: 1px solid #e6e6e6; border-radius: 10px; }
113+ .stat .delta.up { color: var(--ok); }
114+ .status.refunded { background: var(--danger-bg); }
src/App.jsx+2−3
3- import { useMemo, useState } from 'react'
3+ import { useState } from 'react'
18- <Summary />
18+ <Summary />
19+ <OrdersDashboard />
Orders dashboard for acme-web
acme-vm
feat/orders
Add the orders overview to the dashboard: revenue today, order count, and average order value, then the recent orders table.Priya Nair
Explored4 reads
EditOrdersDashboard.jsx /src/pages/+77−0
Editindex.css /src/+33−0

Overview is in with the three stat cards and the recent orders table. Live on http://localhost:5173.

2 Changed files+110 −0
src/pages/OrdersDashboard.jsx+77−0
src/index.css+33−0
Can the stat cards stretch to equal height? The average order card is shorter than the others.Lena Fischer
Editindex.css /src/+4−1

Cards stretch now. The grid uses align-items: stretch and each delta line is pinned to the bottom with margin-top: auto.

Add a 7 day / 30 day toggle above the chart. Default to 7 days.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+31−4
Shellbun test

Added the toggle. 30 days aggregates by week and the axis relabels. 8 tests pass.

Move the delta onto the card’s top row, right aligned against the label.Priya Nair
Editindex.css /src/+6−2

Delta sits on the top row now, right aligned, so the numbers line up down the column.

Use var(--brand) for the Export button, not a hardcoded hex.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+1−1
Claude Sonnet 5
ChatPlanReviewDeep reviewBrowserTerminal
Rate limiter rollout
office-mac-mini
feat/rate-limit
Start the rate limiter plan. Token bucket per API key, 100 a minute.Priya Nair
Explored6 reads
EditrateLimit.ts /src/middleware/+64−0
Shellbun test

Token bucket middleware is in with 12 tests. Step 1 verified.

Keep the bucket in Redis, we run three replicas.Tom Reyes
EditrateLimit.ts /src/middleware/+22−9

Moved the bucket to Redis with a Lua script so the check is atomic across replicas. 14 passing. Steps 2 and 3 verified.

Execute step 4. Start with the webhooks route, I already reviewed the limiter.Lena Fischer
ReadrateLimit.ts
Editwebhooks.ts /src/routes/+14−2
Shellbun test

Webhooks now share the limiter. 16 passing. Marking step 4 verified and moving to the flag rollout.

Thinking
Claude Sonnet 5
ChatPlanReviewDeep reviewTerminal
Dev server on the VM
acme-vm
main
Start the dev server on this VM so the team can preview the orders dashboard.Priya Nair
Shellwhich node npm bun

Node.js isn’t installed on this VM, so I can’t start the dev server yet. I can install it with the system package manager and then run it. Want me to?

Yes, but use the LTS build, the API image pins Node 22.Lena Fischer

Understood, Node 22 LTS from NodeSource.

go ahead and install it and get the server started.Tom Reyes
Shellcat /etc/os-release 2>/dev/null | head -5; which apt-get
Shellsudo apt-get update -qq && sudo apt-get install -y -qq nodejs npm
Shellnode --version && npm --version
Shellnpm install
Shellnpm run dev &

Server is running at http://localhost:5173/, Vite dev server ready in 284ms.

Big Pickle
ChatPlanReviewDeep reviewBrowserTerminal
Project pending status
office-mac-mini
feature/discounts
What is the status of the discounts branch?Tom Reyes
Shellgit log --oneline feature/discounts -8

Eight commits since main: the coupon model, the checkout hook, and a migration. No PR yet.

Do we have a written plan for the discounts work?Priya Nair

No. You have no PLAN, TODO, or roadmap file.

Your closest thing to a plan is .coshell/review/dod.md: integer cents, handled promises, no focused tests, no dead exports.

Draft one from the commits and the dod file, then open it in the Plan tab.Lena Fischer
Readdod.md
Editdiscounts.md /docs/plans/+48−0

Drafted docs/plans/discounts.md with five steps. It is waiting for approval in the Plan tab.

Muse Spark 1.3 Free
ChatPlanReviewDeep reviewTerminal
Count to 120
acme-vm
main
Quick sanity check on Big Pickle before we let it near the repo. Say hi.Tom Reyes

Hi. Big Pickle here, ready when you are.

Without using any tools, list the first ten primes.Priya Nair

2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

Without using any tools, count from 1 to 120, one number per line, then stop.Lena Fischer

1
2
3
4
5
6
7
8
9
10
11
12

Thinking
Big Pickle
ChatPlanReviewDeep reviewTerminal

The agent made each person faster, on their own.

Coshell is the layer that puts the whole team in the session with it.

At a glance

One shared sessionEveryone works in the same live session, not parallel copies they merge later.
Shared warm contextInstead of each teammate loading the repo in a separate session, the team shares one warm context.
Any deviceJoin from a browser, your terminal, or your phone. Same session, same agent.

Everything the team needs to work with one agent.

Not a transcript you share after. The live session you are in together, plus the layer that keeps overlapping work correct.

Work in one session, together.

You and your teammates work in one session, live, watching the same work land on the same running environment. Presence shows who is here, and follow-along lets you watch a teammate steer the agent in real time. See how it differs from Claude Code.

Overlapping edits, caught before they clobber.

One shared environment means the worst collisions never form, because there is no diverging copy to merge. But two agents can still reach for the same lines of the same file, and the engine underneath is last-write-wins. Coshell catches that: the second edit is held before it lands, and a coordinator steers that agent to proceed if the changes are compatible, or to take other lines, wait, or let the first land first. See how Overlap works.

Share the agent's context, instead of reloading it per person.

Without a shared session, every teammate starts fresh and spends tokens loading the same repo again. In Coshell the context lives in the shared session and stays warm, so the team reuses the understanding one person already built, instead of paying to re-ingest the codebase for each developer. Reading from that warm context costs a fraction of loading it cold, and the more context-heavy the work, the more that compounds. Free to self-host, no seats.

Privacy that is set per session.

Every session has its own privacy control. Keep a session private to just you, share it with a few named teammates, or open it to the whole drive. Experiment on your own, and open a session up only when you are ready.

70+ models, on your own keys.

Bring your provider keys and use any of more than 70 models. Admins pick the allowed set per drive and a fallback model, so the team stays consistent and spend stays predictable. Usage is billed by your provider, not by us.

Join from the browser, the terminal, or your phone.

The environment lives in the cloud, so the same session is reachable from any device. Open it in the browser, attach from your terminal with the CLI, or jump in from your phone to unblock a teammate. Same agent, same files, same running environment.

In numbers

70+ modelsAcross providers, on your keys, with an admin-scoped allowed set and a fallback.
Free to self-hostRun a drive on your own machine, your whole team in your org, with no per-seat charge.
Loaded once per teamThe repo is ingested once for the whole team and read warm from cache, not re-loaded per person.
Run Coshell on your own infrastructure.

Need your own keys enforced org-wide, or Coshell running on your own infrastructure so your code never leaves it? Self-host does that for free; org-wide on-prem is the Enterprise tier.

The agent engine you trust, made for your team.

Coshell is built on OpenCode, the open-source agent engine, and keeps it open underneath. The CLI, the SDK, and the wire protocol are unchanged, so the stock OpenCode CLI attaches to a Coshell drive as-is. What Coshell adds is the layer between the people: shared live sessions, overlap detection, per-session privacy, and free self-hosting for the whole team.

Built on OpenCode

Related:

Grid mode: as many sessions as you want, in one window.

Tile sessions and terminals side by side, run several agents on one drive, and follow a teammate’s pane when you want to watch instead of type. Press Cmd+Shift+G on a Mac, Ctrl+Shift+G elsewhere.

AOrders dashboard for acme-webARate limiter rolloutADev server on the VMDProject pending statusOCount to 120
Open
Who can access
Openeveryone on the drive
SharedTom, Lena
Privatejust me
Orders dashboard for acme-web
feat/orders TRLF
Add the orders overview to the dashboard: revenue today, order count, and average order value, then the recent orders table.Priya Nair
Explored4 reads
EditOrdersDashboard.jsx /src/pages/+77−0
Editindex.css /src/+33−0

Overview is in with the three stat cards and the recent orders table. Live on http://localhost:5173.

2 Changed files+110 −0
src/pages/OrdersDashboard.jsx+77−0
src/index.css+33−0
Can the stat cards stretch to equal height? The average order card is shorter than the others.Lena Fischer
Editindex.css /src/+4−1

Cards stretch now. The grid uses align-items: stretch and each delta line is pinned to the bottom with margin-top: auto.

Add a 7 day / 30 day toggle above the chart. Default to 7 days.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+31−4
Shellbun test

Added the toggle. 30 days aggregates by week and the axis relabels. 8 tests pass.

Move the delta onto the card’s top row, right aligned against the label.Priya Nair
Editindex.css /src/+6−2

Delta sits on the top row now, right aligned, so the numbers line up down the column.

Use var(--brand) for the Export button, not a hardcoded hex.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+1−1
1 prompt queuedClear queue
Lena FischerMake the Refunded pill amber. Red reads like an error.
Claude Sonnet 5
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Rate limiter rollout
feat/rate-limit TR
Start the rate limiter plan. Token bucket per API key, 100 a minute.Priya Nair
Explored6 reads
EditrateLimit.ts /src/middleware/+64−0
Shellbun test

Token bucket middleware is in with 12 tests. Step 1 verified.

Keep the bucket in Redis, we run three replicas.Tom Reyes
EditrateLimit.ts /src/middleware/+22−9

Moved the bucket to Redis with a Lua script so the check is atomic across replicas. 14 passing. Steps 2 and 3 verified.

Execute step 4. Start with the webhooks route, I already reviewed the limiter.Lena Fischer
ReadrateLimit.ts
Editwebhooks.ts /src/routes/+14−2
Shellbun test

Webhooks now share the limiter. 16 passing. Marking step 4 verified and moving to the flag rollout.

Thinking
Claude Sonnet 5
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Dev server on the VM
main TRLF
Start the dev server on this VM so the team can preview the orders dashboard.Priya Nair
Shellwhich node npm bun

Node.js isn’t installed on this VM, so I can’t start the dev server yet. I can install it with the system package manager and then run it. Want me to?

Yes, but use the LTS build, the API image pins Node 22.Lena Fischer

Understood, Node 22 LTS from NodeSource.

go ahead and install it and get the server started.Tom Reyes
Shellcat /etc/os-release 2>/dev/null | head -5; which apt-get
Shellsudo apt-get update -qq && sudo apt-get install -y -qq nodejs npm
Shellnode --version && npm --version
Shellnpm install
Shellnpm run dev &

Server is running at http://localhost:5173/, Vite dev server ready in 284ms.

Big Pickle
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Project pending status
feature/discounts LFTR
What is the status of the discounts branch?Tom Reyes
Shellgit log --oneline feature/discounts -8

Eight commits since main: the coupon model, the checkout hook, and a migration. No PR yet.

Do we have a written plan for the discounts work?Priya Nair

No. You have no PLAN, TODO, or roadmap file.

Your closest thing to a plan is .coshell/review/dod.md: integer cents, handled promises, no focused tests, no dead exports.

Draft one from the commits and the dod file, then open it in the Plan tab.Lena Fischer
Readdod.md
Editdiscounts.md /docs/plans/+48−0

Drafted docs/plans/discounts.md with five steps. It is waiting for approval in the Plan tab.

Muse Spark 1.3 Free
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Count to 120
main LFTR
Quick sanity check on Big Pickle before we let it near the repo. Say hi.Tom Reyes

Hi. Big Pickle here, ready when you are.

Without using any tools, list the first ten primes.Priya Nair

2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

Without using any tools, count from 1 to 120, one number per line, then stop.Lena Fischer

1
2
3
4
5
6
7
8
9
10
11
12

Thinking
Big Pickle
Model
Claude Sonnet 5
Claude Opus 5
GPT-5.5
Gemini 3.5 Pro
Muse Spark 1.3 Free
Big Pickle
Chat2PlanDeep ReviewBrowserReview
Morning. Plan is approved, I’m starting the orders dashboard on acme-web.8:52
TR
Tom Reyes8:55I’ll take the limiter then. Which drive?
office-mac-mini has Redis running, use that one.8:55
LF
Lena Fischer9:10Back online. Anything blocked?
TR
Tom Reyes9:11Nope. OrdersDashboard.jsx is Priya’s, limiter is mine, webhooks are free if you want them
LF
Lena Fischer9:12Taking webhooks.
Lena the Refunded pill should be amber, not red. I queued a prompt for it9:30
TR
Tom Reyes9:41Picking up rateLimit.ts for the webhooks route
LF
Lena Fischer9:42Tom I already touched the 429 path there, check the overlap note before you push
Step 4 in the plan is mine, I’ll ping when the tests are green
Sounds good. I’ll review after, then we roll the flag.9:44
Mention
CScoshellassistant
TRTom Reyeson the drive
LFLena Fischeron the drive
OrdersDashboard.jsxfile
index.cssfile
rateLimit.tsfile
webhooks.tsfile
App.jsxfile
Rate limiter rolloutDetailsWorking
Spec approvedPlan approvedExecuting 3/5

Goal

Protect /v2 from bursty API keys without slowing normal traffic. One key should never be able to starve the others.

Approach

A token bucket per API key, 100 requests per minute, stored in Redis so all three replicas share state. Over-limit requests get a 429 with a Retry-After header. Ship behind the rate_limit_v2 flag and roll out gradually.

Constraints

  • No new dependencies beyond ioredis, which we already run.
  • p99 latency budget: +2 ms on the hot path.
  • Existing tests stay green at every step.

Verification

bun test after every step. Load test with 1k keys before the flag moves to 50%. Watch 429 rate and p99 in the dashboard for a day at 10%.

Steps
Token bucket middleware with testsVerified
Add
Redis-backed bucket, atomic across replicasVerified
Add
Retry-After header on 429 responsesVerified
Add
Apply the limiter to /v2/webhooksLena, in progress
Add
Roll out behind the rate_limit_v2 flagWaiting
Add
on step 5, Roll out behind the flag
PN
Priya Nair2m
Roll out to 10% of keys first, then 50%. Add both as substeps.
LF
Lena Fischernow
Agreed, updating the step before the agent gets there.
Deep Review
feat/orders against main
Run review
No review yet. Run one when the branch is ready.
HighExport button colour is hardcodedOrdersDashboard.jsx:41
The Export button sets #5B4CF0 inline while every other control reads var(--brand). Tom’s follow-up prompt fixes it; verify once that edit lands.
Send fix to agentDismiss
MediumNothing tests the stat cardsOrdersDashboard.jsx
No test asserts that the three stat cards render or that a delta shows its direction. A render test with the card labels would catch a regression.
Send fix to agentDismiss
LowUnused importApp.jsx:3
useMemo is imported and never used.
Send fix to agentDismiss
Port 5173
Dev servers on this drive
Port 5173vite
Port 3000next
Port 8080api
Port...ShareInspect
acme
DashboardOrdersCustomersSettings
Orders
Last 7 days · updated just now
FilterExport
Revenue today$18,420+12% vs last week
Orders342+8%
Average order$53.86−3%
Revenue, last 7 days7 days30 days
MonTueWedThuFriSatSun
OrderCustomerStatusTotal
#10428Maya Osei$128.40
#10427Theo LindqvistRefunded$64.00
#10426Ada Mensah$212.75
#10425Ravi ShankarPending$39.90
Tom
3 Changed files+112 −3
src/pages/OrdersDashboard.jsx+77−0
38 <div className="toolbar">
39+ <button className="btn">Filter</button>
40+ <button className="btn primary" style={{ background: '#5B4CF0' }}>
41+ Export
42 </div>
src/index.css+33−0
112+ .stat { border: 1px solid #e6e6e6; border-radius: 10px; }
113+ .stat .delta.up { color: var(--ok); }
114+ .status.refunded { background: var(--danger-bg); }
src/App.jsx+2−3
3- import { useMemo, useState } from 'react'
3+ import { useState } from 'react'
18- <Summary />
18+ <Summary />
19+ <OrdersDashboard />
Orders dashboard for acme-web
acme-vm
feat/orders
Add the orders overview to the dashboard: revenue today, order count, and average order value, then the recent orders table.Priya Nair
Explored4 reads
EditOrdersDashboard.jsx /src/pages/+77−0
Editindex.css /src/+33−0

Overview is in with the three stat cards and the recent orders table. Live on http://localhost:5173.

2 Changed files+110 −0
src/pages/OrdersDashboard.jsx+77−0
src/index.css+33−0
Can the stat cards stretch to equal height? The average order card is shorter than the others.Lena Fischer
Editindex.css /src/+4−1

Cards stretch now. The grid uses align-items: stretch and each delta line is pinned to the bottom with margin-top: auto.

Add a 7 day / 30 day toggle above the chart. Default to 7 days.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+31−4
Shellbun test

Added the toggle. 30 days aggregates by week and the axis relabels. 8 tests pass.

Move the delta onto the card’s top row, right aligned against the label.Priya Nair
Editindex.css /src/+6−2

Delta sits on the top row now, right aligned, so the numbers line up down the column.

Use var(--brand) for the Export button, not a hardcoded hex.Tom Reyes
EditOrdersDashboard.jsx /src/pages/+1−1
Claude Sonnet 5
ChatPlanReviewDeep reviewBrowserTerminal
Rate limiter rollout
office-mac-mini
feat/rate-limit
Start the rate limiter plan. Token bucket per API key, 100 a minute.Priya Nair
Explored6 reads
EditrateLimit.ts /src/middleware/+64−0
Shellbun test

Token bucket middleware is in with 12 tests. Step 1 verified.

Keep the bucket in Redis, we run three replicas.Tom Reyes
EditrateLimit.ts /src/middleware/+22−9

Moved the bucket to Redis with a Lua script so the check is atomic across replicas. 14 passing. Steps 2 and 3 verified.

Execute step 4. Start with the webhooks route, I already reviewed the limiter.Lena Fischer
ReadrateLimit.ts
Editwebhooks.ts /src/routes/+14−2
Shellbun test

Webhooks now share the limiter. 16 passing. Marking step 4 verified and moving to the flag rollout.

Thinking
Claude Sonnet 5
ChatPlanReviewDeep reviewTerminal
Dev server on the VM
acme-vm
main
Start the dev server on this VM so the team can preview the orders dashboard.Priya Nair
Shellwhich node npm bun

Node.js isn’t installed on this VM, so I can’t start the dev server yet. I can install it with the system package manager and then run it. Want me to?

Yes, but use the LTS build, the API image pins Node 22.Lena Fischer

Understood, Node 22 LTS from NodeSource.

go ahead and install it and get the server started.Tom Reyes
Shellcat /etc/os-release 2>/dev/null | head -5; which apt-get
Shellsudo apt-get update -qq && sudo apt-get install -y -qq nodejs npm
Shellnode --version && npm --version
Shellnpm install
Shellnpm run dev &

Server is running at http://localhost:5173/, Vite dev server ready in 284ms.

Big Pickle
ChatPlanReviewDeep reviewBrowserTerminal
Project pending status
office-mac-mini
feature/discounts
What is the status of the discounts branch?Tom Reyes
Shellgit log --oneline feature/discounts -8

Eight commits since main: the coupon model, the checkout hook, and a migration. No PR yet.

Do we have a written plan for the discounts work?Priya Nair

No. You have no PLAN, TODO, or roadmap file.

Your closest thing to a plan is .coshell/review/dod.md: integer cents, handled promises, no focused tests, no dead exports.

Draft one from the commits and the dod file, then open it in the Plan tab.Lena Fischer
Readdod.md
Editdiscounts.md /docs/plans/+48−0

Drafted docs/plans/discounts.md with five steps. It is waiting for approval in the Plan tab.

Muse Spark 1.3 Free
ChatPlanReviewDeep reviewTerminal
Count to 120
acme-vm
main
Quick sanity check on Big Pickle before we let it near the repo. Say hi.Tom Reyes

Hi. Big Pickle here, ready when you are.

Without using any tools, list the first ten primes.Priya Nair

2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

Without using any tools, count from 1 to 120, one number per line, then stop.Lena Fischer

1
2
3
4
5
6
7
8
9
10
11
12

Thinking
Big Pickle
ChatPlanReviewDeep reviewTerminal

Questions, answered

Several people in the same live session at once, prompting one agent and watching its work as it happens, on a shared filesystem, terminal, and browser. It is closer to Figma or a Google Doc than to git: one source of truth everyone sees live, instead of each person taking a copy and merging later.

Coshell works with those agents rather than replacing them, across more than 70 models. The single-player tools made each individual faster while leaving the team's coordination worse. Coshell is the layer that makes the team work with the agent together: shared live sessions, overlap handling when code is written, shared context, and one standardized environment. See Coshell vs Claude Code and Coshell vs Codex.

No, for two reasons. One shared environment means there is no diverging copy to lose, so the worst class of collision cannot form. And when two agents reach for the same lines of the same file, an overlap layer catches it and holds the second edit before it lands, then steers that agent to proceed if the changes are compatible, or to take other lines, wait, or let the first land first.

Every session has its own privacy control. Keep a session private to just you, share it with a few named teammates, or open it to everyone on the drive. Experiment on your own, and open a session up only when you are ready.

A cloud development environment gives one person a machine in the cloud. Coshell is built around several people and the agent working in the same live environment at once, with overlap detection and shared agent context. The difference is the shared, agent-native, multiplayer design, well beyond simply being hosted in the cloud. See Coshell vs Codespaces.

We do not become your source of record. Work in a drive commits and pushes to the repositories you already have, so your branching, review, and CI carry on unchanged, and there is nothing to migrate off if you leave. The Enterprise tier adds org-wide on-prem and SSO; either way, self-host keeps your code on your own machine.

No. A drive is a persistent, warm session, so multiplayer is real-time when you want it and a clean handoff when you do not. A teammate in another timezone opens the same drive and picks up exactly where you left off, with the agent's context intact, instead of cold-starting. For a team working together it is live co-working; for an async team it is a handoff with all the context preserved.

It works alongside them. Most engineers keep their own editor and agent for solo work and drop into a shared drive when the work is shared: pairing, onboarding, live debugging, review. Coshell is built on OpenCode, so your stock OpenCode CLI attaches to a drive unchanged, and work pushes to your normal git. Adopting it is additive, not a migration. Coshell is the shared session your team works in, not another editor to switch to.

A model owner is built to make one agent better. The hard part for a team is coordination across people and across models, and that layer is only useful if it stays neutral: many models on your own keys, your own git, your own infrastructure. A model owner is disincentivized from building exactly that, because neutrality works against their own model. The neutral layer that lets any agent coordinate with any other is something only a company that does not own a model is positioned to build.

Get your team in the same session.

Open a drive in the browser, or attach from the CLI. Your whole team works in shared live sessions, on the same codebase.