moooon
Motir
Vibe the project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.
- Vibe Project
- Open Source
- AI Agent
- AI Loop
- 6
- requests
- 4
- upvotes
- 488
- planned
- 5,024
- shipped
- (motir-core · docs) `docs/cli.md` documents the three lanes — `motir next`, `motir next --parent`, `motir next --bug`, `motir ready --parent | --bug`, and what `auto` / `batch` / a scoped run read now
- (motir-core · CLI) `motir next --parent` runs the next runnable container as a parent run, `motir next --bug` runs the next bug, and `motir ready --parent | --bug` lists those lanes — flags, command catalog, help and changeset
- (motir-core · test) Story E2E + acceptance video — `/ready` shows a story as one expandable row over its ready leaves, never an epic, and a bug only in the Bugs list
- (motir-core · CLI) The CLI reads the lane endpoints instead of `getProjectReadySet` — regenerated API types, `nextReady` on the leaves lane, scoped runs and `motir batch` over leaves ∪ bugs, `motir auto` leaves then bugs, the link probe and `motir ready`'s read
- (motir-core) `/ready` renders the lanes — expandable runnable-container rows over their ready leaves, standalone leaf rows, and a separate Bugs list with its own count
- (motir-core) The MCP `list_ready` and `next_ready` take a `lane` — `leaf` (default) · `container` · `bug` — so an agent and `/ready` never disagree
- (motir-core) Three `/api/v1` operations — `GET …/ready/leaves`, `…/ready/containers`, `…/ready/bugs` — with their row schemas, OpenAPI entries, contract-version bump and run-token access
- (motir-core) The ready set's three LANES in the service — `listReadyLeaves` grouped by runnable container, `listReadyContainers`, `listReadyBugs`, one group order and one lane-aware cursor over the existing readiness walk
- Ready work in three lanes — `/ready` lists runnable containers that expand to their leaves plus a separate Bugs list, and `motir next` / `--parent` / `--bug` each take their own lane from three new API endpoints
- (motir-core) A Visitor's data doors find their project through a browser-global cookie — a member tab in the same browser clears it, and the Visitor tab's next board, peek or overlay read answers from the reader's OWN project
- (motir-core) The Approvals pager on a Visitor view links to the member `/approvals?page=N` — whenever the `motir_visitor` cookie is gone, Next page lands the reader in their own project
- (motir-core) A Visitor can't switch Work items between List and Tree — the switch pushes `?view=` onto `/p/<id>/items` or `/tree`, whose pages pin the view by path and ignore the query
- (motir-core · verification) VERIFY Release A is SERVING on every `motir-core` machine before the client stops selecting the legacy role fields — `workspace_role` NOT NULL in production, the fallback-free image running, and no not-null or role error in its windowRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- `transactionStall.test.ts` "reports an EXHAUSTED pool" flakes: the maxWait-rejected transaction's discarded BEGIN outlives the test and trips the in-flight probe
- (motir-core · design) The Instances page — where it is reached from, the empty state, the create dialog with its profile picker, the instance rows in every lifecycle state with machine time and credits, Wake, Delete with its confirmation, and every refusal in wordsYour own agent instances — host Claude Code, Codex or any sandbox agent in Motir's cloud on your own credential, see them on one page, work with one beside it, and let idle ones hibernate
- (motir-core) The Visitor view's shared page bodies don't know they are on a Visitor path — their links, pagers and load-more actions assume the member route and the active project, and a referer+cookie proxy redirect is the only rescue
- (motir-core) A server render failure lands on Motir's own error page — `app/(authed)/error.tsx`, `app/error.tsx` and `app/global-error.tsx` built to the drawn design, each reporting the caught error to Sentry with its digest, in `en` and `zh`
- (motir-core) A server render failure crashes the tab — no error boundary catches a throw in `app/(authed)/layout.tsx` or `app/layout.tsx`, so Next's `onUncaughtError` fires (seen on `/workbench` as a digest-only Server Components error)
- Mint the instance lane's fleet-organisation Fly token and set motir-core's three FLY_INSTANCES_* secrets — read each back from Fly before the story's pull request opensYour own agent instances — host Claude Code, Codex or any sandbox agent in Motir's cloud on your own credential, see them on one page, work with one beside it, and let idle ones hibernate
- Decision — a user agent instance end to end: the persistent machine and volume on the orchestrator port, hibernate and wake, the idle window and sizes, the instance record and its states, the per-interval charge, the fleet ceiling, the permission, and which sandbox profiles may be offered under each vendor's termsYour own agent instances — host Claude Code, Codex or any sandbox agent in Motir's cloud on your own credential, see them on one page, work with one beside it, and let idle ones hibernate