<title>Time · an agent factory that lives in your GitHub repo</title>
<metaname="description"content="Label an issue, get a merged PR. Time is a GitHub-native agent factory: issues are the ledger, GitHub Actions is the clock, and AI seats plan, build, review and merge.">
<spanclass="g">⏱️</span> qwen is working on this now
<spanclass="g">⏱️</span> qwen opened PR #10 (13 steps)
<spanclass="g">✔</span> grok: Approve
<spanclass="g">⏱️</span> approved and green, merged PR #10</pre>
</div>
</div>
</div>
<sectionid="loop">
<divclass="wrap">
<divclass="label">Drawing 02 · the loop</div>
<h2>One spec in, merged cards out</h2>
<pclass="sub">Write a spec as an issue and label it <code>spec</code>. Time splits it into cards with dependencies, runs them one at a time,
and pulls the next card the moment one merges. Every step is a comment on the card, so the ledger is the issue thread itself.</p>
<divclass="diagram sheet">
<svgviewBox="0 0 1060 300"role="img"aria-label="Spec issue, planner, cards, worker opens a PR, reviewer approves, checks pass, auto-merge, next card; objections, red checks and protected paths go to a human.">
<textx="480"y="30"text-anchor="middle"fill="#8fd3ff"font-size="11">one Actions run per beat · every beat is a comment on the card</text>
</g>
</svg>
<divclass="legend"><span><b>Clock</b> GitHub Actions: hourly, and right away on labels and reviews</span><span><b>Brains</b> Venice seats: Kimi, Grok, Qwen, DeepSeek, GLM, Gemini</span><span><b>Ledger</b> the issue thread</span></div>
</div>
<divclass="grid3"style="margin-top:22px">
<divclass="cell sheet"><divclass="label">Seats</div><h3>@mention a model</h3><p>Write <code>@grok</code>, <code>@kimi high</code> or <code>@qwen max</code> in any issue or PR and that seat answers in the thread. Only you and your collaborators can summon them.</p></div>
<divclass="cell sheet"><divclass="label">Hands</div><h3>The worker codes</h3><p>A seat edits the repo on its own branch, runs the tests on a runner, and opens the PR itself. Workflow files and secrets stay out of its reach.</p></div>
<divclass="cell sheet"><divclass="label">Updates</div><h3>One engine, many repos</h3><p>Every copy gets a weekly pull request with the latest engine from teahubxyz/time, the way a CMS updates itself, so projects don't drift.</p></div>
</div>
</div>
</section>
<sectionid="proof">
<divclass="wrap">
<divclass="label">Drawing 03 · receipts</div>
<h2>Proof, not promises</h2>
<pclass="sub">This repo's own history, nothing staged and nothing smoothed over. Click through: every step is a public comment.</p>
<ulclass="receipts">
<li><spanclass="k">Spec</span><span><ahref="https://github.com/teahubxyz/time/issues/5">#5</a> was labelled <code>spec</code>; the planner split it into cards <ahref="https://github.com/teahubxyz/time/issues/6">#6</a> and <ahref="https://github.com/teahubxyz/time/issues/7">#7</a>, the second waiting on the first.</span></li>
<li><spanclass="k">First card</span><span>#6 hit four setup problems on its way (a model without tool calling, Actions not yet allowed to open PRs, no CI check, a missing permission). Each was fixed in the engine or the settings, and the card was retried with <code>/time retry</code>. Then Qwen opened <ahref="https://github.com/teahubxyz/time/pull/9">PR #9</a>, Grok approved it, and Time merged it.</span></li>
<li><spanclass="k">Second card</span><span>#7 was promoted the moment #9 merged. Qwen opened <ahref="https://github.com/teahubxyz/time/pull/10">PR #10</a> a minute later, Grok approved, and Time merged it and closed the card. No human comment, label or click on the card or its PR.</span></li>
<li><spanclass="k">Ventures</span><span>The same machinery runs a small venture studio: it reads what's trending on GitHub, the seats pitch and vote, write a launch plan, build the page and measure signups. <ahref="ventures/">See the ventures →</a></span></li>
</ul>
</div>
</section>
<sectionid="start">
<divclass="wrap">
<divclass="label">Drawing 04 · start</div>
<h2>Running in four steps</h2>
<olclass="steps">
<li><div><b>Use the template.</b><ahref="https://github.com/teahubxyz/time/generate"target="_blank"rel="noopener">Create your copy</a> of teahubxyz/time; it's yours, public or private.</div></li>
<li><div><b>Give the seats a key.</b><spanclass="code">gh secret set VENICE_API_KEY</span></div></li>
<li><div><b>Turn it on.</b><spanclass="code">gh variable set TIME_MODE --body live</span>, <spanclass="code">TIME_WORKER --body "venice:qwen coder"</span>, <spanclass="code">TIME_REVIEW --body venice:grok</span>, and <spanclass="code">TIME_AUTOMERGE --body on</span> when you're ready to let it merge.</div></li>
<li><div><b>Write a spec.</b> Open an issue that lists the cards, each with a <code>DONE:</code> line, and label it <code>spec</code>. Watch the thread.</div></li>
</ol>
<pclass="fine">Or open your copy in Claude Code and say "set up Time": the setup skill in <code>.claude/skills/time</code> walks through it, and the Doctor workflow checks labels, settings and keys.</p>
</div>
</section>
<sectionid="limits">
<divclass="wrap">
<divclass="label">Drawing 05 · tolerances</div>
<h2>Honest limits</h2>
<ulclass="limits">
<li>The seats are as good as the models behind them. Small, well-scoped cards with a clear <code>DONE:</code> line work best.</li>
<li>You pay Venice for the seats. GitHub's runners are free for public repos and metered for private ones.</li>
<li>GitHub won't let Actions edit workflow files, so changes there (and anything under paths you protect) wait for a human.</li>
<li>Dry-run is the default and there is a daily cap; turning on auto-merge is your call, per repo.</li>
<li>On a public repo, only you and your collaborators can trigger seats or count as a reviewer. Never attach a self-hosted runner to a public repo.</li>
<li>It's young software: the engine changes weekly, and the update pull request tells you what changed.</li>
</ul>
</div>
</section>
<sectionid="ventures">
<divclass="wrap">
<divclass="label">Drawing 06 · output</div>
<h2>Latest ventures</h2>
<pclass="sub">Built and launched by the venture loop on this repo; each one decides its own future after seven days of signups.</p>
<divclass="ventures"id="vlist"><aclass="venture"href="ventures/"><div><b>The studio index</b><span>Every venture, its status and its signups.</span></div><spanclass="tag">open</span></a></div>
</div>
</section>
<footer>
<divclass="wrap">Time · <ahref="https://github.com/teahubxyz/time">github.com/teahubxyz/time</a> · this page is static and loads nothing from other sites; the venture list below the fold is read from this site's own ventures.json.</div>