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
- 贊同
- 534
- 已規劃
- 4,982
- 已發布
- Planning bug (both planners): a production-verify child was laid inside story MOTIR-8787 whose merge it waits on; the rule is prose-only, so a recurring miss passes validation and approval
- The CLI's close racing a Cancel answers 500 in the merge queue, ejecting the PR (agentInstanceRunStoryGate)
- Each pool scales on headroom: a suspended machine wakes when free slots fall below the watermark, a machine is created when none is left to wake, idle machines suspend and long-idle ones retire, a wake that never answers is retried or replaced, and only real work keeps a machine awakePlanning 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) Extend the Fly stand-in for the headroom e2e — a create route that spawns a real process, records.creates, and updated_at on every listing rowPlanning 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) Story e2e on the planningPool.e2e harness: wake before the queue grows, create once none is left, suspend then destroy down to the floor, other pool unaffectedPlanning 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) Integration test: headroom scaling seams — coverage floor over the story's changed surface, created machine eligible to poolSnapshot and inside runDeploy's retire set, per-pool isolationPlanning 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) Only work routes reset the idle clock — other requests count in flight but do not touch lastActivityAt; GET /health stays ignoredPlanning 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) Retire long-idle machines inside the existing sweep: one machine per pass, oldest-suspended first, never below the pool floor, never with a running job, retire mark or non-current releasePlanning 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) A wake that never answers is retried once, then replaced — the machine leaves the pool's view for the episode and the queued job stays queuedPlanning 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) Create when none is left to wake: behind a per-pool machine bound, exactly one create per debounce window, logged; with no bound, no create and the per-pool exhausted alertPlanning 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) createMachine in flyMachinesClient — POST /v1/apps/{app}/machines with the pool's template, current release image, size and pool markerPlanning 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) Headroom wake: a pool below its watermark of free slots resumes its own suspended machines one per debounce window, and the busy timer runs while the pool is below the watermarkPlanning 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
- Decide the shape axis's DENSITY SCALE — what padding / height tokens exist, so the own-box escapes have somewhere to go
- (verify) On production, a planning job running across a motir-ai deploy finishes on its old machine past 300 s, the old machine then exits and is destroyed, and the pool is back to 5 machines on the new release
- Author session cannot rename its own proposal nor wire its own blocked_by: author and update_item each refuse and point at the other
- Docker image builds inside a fleet runner cannot resolve DNS, so motir-ai's `flyctl deploy --local-only` jobs fail at apt-get and nothing deploys while the switch is ON
- 8.10 Take Motir public — the build-in-public launch
- (verification) After the skill-run story ships — run one real card in Claude Code with the released `motir-run` skill against production: its run is on `/runs` as agent-reported, with Claude Code, the model, its messages and a duration, and the card names its implementerRun provenance — every run of a card records who ran it, on which model and for how long, however it was started
- (verification) On real pull requests, CI publishes the acceptance receipt over OIDC: a motir-core PR and a PR in a newly created Motir-hosted project each get their receipt from the lane, and the dispatched agent publishes nothing
- 8.5 Production hardening + observability