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
- 需求
- 4
- 贊同
- 530
- 已規劃
- 4,962
- 已發布
- (motir-ai) The pools ask the cost guard inside the PlanningPoolState lock: createForPool and the wake-replace path create only on its yes, record every create and failed attempt, leave work queued at the ceiling, keep waking while tripped, and run the breached check on every scale checkPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- (motir-ai) The deploy-codegraph job's pre-deploy snapshot refuses a motir-codegraph fleet count above CODEGRAPH_SCALE_CEILING, before flyctl deploy runs, and names the ceilingPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- (motir-ai) pnpm deploy:planning refuses an intended per-pool machine count above that pool's ceiling, before it creates or retires any machine, and names the ceilingPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- (motir-ai) The cost guard: one check per group that counts the listing, reads the creation record, answers create / at ceiling / tripped / no ceiling, records unrecorded new-release machines as deploy, and opens and closes the at-ceiling, nearing-ceiling, tripwire and ceiling-breached episodes through CapacityAlertEpisode and raiseOperatorAlertPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- (motir-ai) Machine creation record: a table and repository holding one row per create or failed create attempt (group, machine id, time, reason, deploy marked apart), written inside the caller's transaction and counted per group over a windowPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- (motir-ai) Cost-guard settings per group: the ceiling is POOL_MAX_MACHINES_<POOL> and CODEGRAPH_SCALE_CEILING (unset means no create), plus a near-ceiling level, a tripwire limit and a tripwire window in the shipped POOL_* and CODEGRAPH_SCALE_* schemes, with the decision's placeholders as defaults and the graph ceiling set in fly.codegraph.tomlPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Planning bug (both planners): a plan names committed cards by internal id (parentRef, blockedByRefs, workItemId, motir: links) but the work-item read door takes a key only, so a planning session cannot read the blocker its own plan names (PROJECT_NOT_FOUND)
- A CI fleet runner boot that fails is never retried, so one GitHub job per failure waits for a runner forever
- 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
- After the update story DEPLOYS — on production, update a real agent from an older published sandbox image to the newest one: the image pulled by digest, the home file, checkout and agent sign-in still there, an agent not updated left on its version, and the machine's volume id unchanged on FlyYour 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
- After the stories DEPLOY — on production, sign a Claude Code and a Codex instance in with real personal accounts, chat, run a card to a pull request, and watch both hibernate and wake with the sign-in intactYour 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
- Planning bug (both planners): the code-fact rule says "VERIFY on origin/main — fetch first", but a session that reads code through the Motir code tools has no git fetch, so plan.py sessions loop on refused git calls and the hosted rule names a step its session cannot take
- Planning bug (both planners): plan.py sessions on the MCP code-read path keep Read/Grep with no path limit, so they read the project's local working tree (106 files behind origin/main) as evidence; the hosted planner has no such path
- DeleteOrganizationDialog trips a lint warning that blocks the zero-warning commit hook
- The reports read well and point where you ask — full-width pages with unclipped axes, a help text you can hide, Workload over a period with unassigned work on its reporter, Created vs Resolved as bars with series switches, and sprint pickers on Sprint report and Velocity
- (motir-core) Story E2E with acceptance video — every report at 1440 and 1920 px filling the width with its x axis above the fold, no overlapping labels on a daily 90-day Created vs Resolved, the help text hidden across reports and reloads, Workload's reporter segment, a copied bars + Resolved-only link reopening identically, and both sprint pickers with the bad-id fallback
- (motir-core) Story vitest gate — the coverage floor over the changed surface, Workload's window and reporter attribution and Velocity's sprint range against real Postgres, tenant isolation of both reads, URL round-trips through `buildReportHref`, every locale carrying every new key, and the dashboard widget tiles' rendering unchanged
- (motir-core) Translate every string this story adds — the eight help texts, the toggle, the Workload period controls and legend, the Created vs Resolved switches and the two sprint pickers — into zh, ja, ko, de, fr, es, it, nl, pl and pt
- (motir-core) The Sprint report gets a sprint picker — active + completed sprints in Burndown's order, navigating to `/sprints/<id>/report`, and a foreign or never-started sprint id opening the default sprint's report instead of `notFound()`
- (motir-core) Velocity covers the completed sprints you choose — `getVelocity` reads a range ending at a chosen completed sprint of a chosen count, a picker on the page puts both in the URL, and with neither set it shows today's last-N