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
- 516
- planned
- 4,924
- shipped
- (motir-core) Story E2E — archive a page with a sub-page, find both in Archived pages, restore them to their place, archive again and delete them, an archived page's banner, and a viewer with no affordances — recorded as the paced acceptance videoPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) Story VITEST gate — the coverage floor over the archive modules, archive / restore / delete of a subtree on real Postgres with versions and attachments, every restore landing, concurrent archive and move, `page:delete` by role, and RLS isolationPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) The ARCHIVED PAGES list in `/pages` — its entry from the tree toolbar, rows with where each page came from, Restore with the restored-elsewhere notice, Delete…, load-more, and its empty, loading, error and role statesPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) ARCHIVE from the tree and the page — Archive… with its sub-page count, the toast with Undo, and an archived page at its address shown read-only under a banner with Restore and Delete…, the permanent-delete confirm, and the history panel's Restore hiddenPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) The page ARCHIVE ROUTES — archive, restore, permanent delete and the Archived-pages list read, each refusal mapped to its HTTP status, and the permission-inventory rowsPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) `pagesService` archive — archive, restore and delete a page in one locked transaction under `page:edit` / `page:delete`, the Archived-pages list, an archived page read with its state, and version restore refused on an archived pagePages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) Page ARCHIVE in `pageRepository` and the `PageStore` adapter — write and read the archive set, delete a set with its versions, the keyset Archived-pages read, and every live read (level, trail, subtree, folder counts, `hasChildren`) excluding archived pagesPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) The `page:delete` KEY — enforced in the catalog, held by Manager only, `canDeletePages` / `assertCanDeletePages`, and its permission-inventory rowsPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) ARCHIVE, RESTORE and DELETE in `@motir/pages` — the subtree archive set, the restore landing ladder, delete only from the archive, the archived-page refusals on save / rename / move / create, and the `PageStore` port methodsPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) The page ARCHIVE COLUMNS — migration adding `archived_at`, `archive_root_id` and `archived_by_id` with their pairing CHECK, the archived-list index, and the Prisma modelPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- Archive, delete and restore a page — the page and its sub-pages leave the tree together and come back where they werePages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) Create and wake hand the boot to its driver and answer at once — the inline boot wait removed, the sweep resumes only a boot whose lease has expired, and the run launcher waits on the agent's state instead of settling itYour 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 · test) Playwright E2E + acceptance video — press Create and the panel opens at once, watch every step tick through to running and a terminal prompt, reload mid-boot, a repository that fails to clone, and a wake with the clone skipped (en + zh)Your 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 · test) Story test gate — coverage floor over the boot driver, the step record, the boot read and stream, and the panel's read-out; create → driver → steps → running against the real database and the fake fleet; a failure on each step; the driver, the sweep and the run launcher racing one boot with one winner; a stream resumed from its cursor; the owner-only refusalYour 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) Story E2E — an agent with a device-grant token creates a page from markdown over `/api/mcp`, a person opens it at `/pages/<id>` and sees the same content, edits it, the agent's stale update is refused by name and a current one landsPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) My agents — Create closes on the server's answer and opens the new agent's panel, and the panel reads out the boot live (waiting, in progress, done, failed, skipped, one row per repository) while starting and waking, then collapses to a summary once running; the booting list row; en and zh; built to the approved deltaYour 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) Story VITEST gate — the coverage floor over the markdown write, the service doors and the three tools; the editor-written page read back as markdown; a markdown write racing an editor save on real Postgres; cross-project and missing-key refusals; the CLI grant reaching all three toolsPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) `page:view` and `page:edit` join `CLI_TOKEN_GRANT` — argued at the constant, in catalog order, shown on the device approval screen, with the device-flow wire string, the grant guards and `HOSTED_RUN_TOKEN_GRANT`'s subset test brought along, and `page:delete` kept outPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history
- (motir-core) The boot read and its live stream — GET …/instances/[id]/boot and …/instances/[id]/boot/stream (server-sent events with a step cursor, a heartbeat and a done frame), owner-only, on the dispatch-run stream's conventionYour 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 `create_page` and `update_page` MCP tools — a markdown body under `page:edit`, `create_page` filed under a parent page, a folder or the root, `update_page` refused by name on a stale revision, each page refusal mapped to a tool error, in every home a tool hasPages — a project's documents: write a page, keep it in the project tree beside the work it describes, and keep its history