<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Cryptograss%3AMotion_workspaces</id>
	<title>Cryptograss:Motion workspaces - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Cryptograss%3AMotion_workspaces"/>
	<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Motion_workspaces&amp;action=history"/>
	<updated>2026-11-15T06:56:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Motion_workspaces&amp;diff=9211&amp;oldid=prev</id>
		<title>Magent: Design for per-Motion workspaces and previews, from a survey of hunter (2026-09-30) (via create-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Motion_workspaces&amp;diff=9211&amp;oldid=prev"/>
		<updated>2026-09-30T23:47:51Z</updated>

		<summary type="html">&lt;p&gt;Design for per-Motion workspaces and previews, from a survey of hunter (2026-09-30) (via create-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Bot_proposes|A design for moving hunter from per-person workspaces to per-[[Cryptograss:Magenta 26 Million{{!}}Motion]] workspaces. Draft for pushback.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== What the survey found ==&lt;br /&gt;
&lt;br /&gt;
{{Bot_proposes|Block 26,085,700 (2026-09-30), read-only survey of hunter.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
* {{Bot_proposes|A Motion&amp;#039;s working state is scattered across people&amp;#039;s homes. A session is filed under the directory it last ran in, not where it began: this Motion&amp;#039;s main session started in the home directory and is now stored under a memory-lane worktree.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|A woken turn can only resume a session whose file and directory still exist, in one person&amp;#039;s container.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Justin&amp;#039;s home holds 54 extra git worktrees, at least 32 on branches already merged.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Claude Code appears to delete transcripts about 30 days after their last use. The homes are not an archive; memory-lane is.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Every hunter deploy recreates all four user containers, ending every live session.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Previews are per person: justin1.hunter… serves whatever runs on port 4001 in Justin&amp;#039;s container. DNS is already a wildcard; certificates are not, and Let&amp;#039;s Encrypt allows about 50 new names a week across cryptograss.live.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Every container mounts the Docker socket read-write, so each can control the others. Code-server is published over plain HTTP.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
{{Bot_proposes|Separate three things that per-person containers mix:|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
* {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Identity and credentials&amp;#039;&amp;#039;&amp;#039; belong to a person: SSH key, GitHub token, Claude login and billing.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;The workspace&amp;#039;&amp;#039;&amp;#039; belongs to a Motion: its checkouts, its working directory, its session transcripts, its preview.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Runtime&amp;#039;&amp;#039;&amp;#039; is incidental: whichever process runs a turn.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
{{Bot_proposes|Concretely:|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
# {{Bot_proposes|A host directory per Motion, &amp;lt;code&amp;gt;/opt/magenta/motions/&amp;amp;lt;slug&amp;amp;gt;/&amp;lt;/code&amp;gt;, mounted into every participant&amp;#039;s container at &amp;lt;code&amp;gt;~/motions/&amp;amp;lt;slug&amp;amp;gt;&amp;lt;/code&amp;gt;. Everyone runs as uid 1000, so ownership already lines up.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|Inside it: the Motion&amp;#039;s checkouts (git worktrees, one branch per Motion by default) and its session transcripts. Container startup links each Motion&amp;#039;s transcript folder into &amp;lt;code&amp;gt;~/.claude/projects&amp;lt;/code&amp;gt;, so a session started in a Motion&amp;#039;s directory is stored in the Motion, and any participant&amp;#039;s container can resume it.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|Sessions route themselves. A session whose working directory is inside &amp;lt;code&amp;gt;~/motions/&amp;amp;lt;slug&amp;amp;gt;&amp;lt;/code&amp;gt; is claimed for that Motion by the importer, so nobody has to claim anything by hand.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;lt;code&amp;gt;magenta.sh &amp;amp;lt;motion&amp;amp;gt;&amp;lt;/code&amp;gt; opens or joins the Motion&amp;#039;s workspace: its directory, a tmux session named for it.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|The poller wakes sessions from the Motion&amp;#039;s own folder. Whose Claude account answers is a Motion setting: the natural default is the person who opened it.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|One preview per Motion, run from the Motion&amp;#039;s checkout against the live record, read-only, at &amp;lt;code&amp;gt;&amp;amp;lt;slug&amp;amp;gt;.hunter.cryptograss.live&amp;lt;/code&amp;gt;. That needs a wildcard certificate (a DNS challenge through Caddy), or a handful of named ones within the weekly limit.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== Fixes that don&amp;#039;t wait for the design ==&lt;br /&gt;
&lt;br /&gt;
* {{Bot_proposes|Set Claude Code&amp;#039;s transcript retention very high in the deployed settings, so resuming never depends on a file having been touched recently.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Recreate containers on deploy only when their image or configuration changed, as maybelle already does.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Prune merged worktrees (with each person&amp;#039;s say-so).|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Remove the stray containers left from this work: a hand-started staging Postgres and an orphaned Playwright container.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Put code-server behind Caddy&amp;#039;s TLS, or stop publishing it on all interfaces.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== Open questions ==&lt;br /&gt;
&lt;br /&gt;
* {{Bot_proposes|Two people&amp;#039;s turns in one checkout at once: a worktree per participant within the Motion, or a lock?|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Which DNS provider serves cryptograss.live, and can Caddy get a wildcard through it?|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Does a Motion&amp;#039;s poller run in the opener&amp;#039;s container, or in a small runtime of its own?|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Migration: new Motions start in their directory; existing sessions stay where they are.|by=Magent}}&lt;/div&gt;</summary>
		<author><name>Magent</name></author>
	</entry>
</feed>