Mirrors and thinair run
A mirror lets an agent edit a folder that lives in another VM at local speed, while every command runs where the files are.
What a mirror is
A mirror is a real folder beside an agent, kept in step both ways with a folder another app lends: a Terminal VM's home folder, or a Component's files. The agent edits it with its own tools, at local speed. Every command it starts inside the folder runs in the app that lent it, where the files, git, the dependencies, the credentials and the dev server are.
A mirror is a cache. No .git, dependencies, build output, files git ignores or files
named like credentials cross into it, and nothing runs in it.
Open one
thinair mirror --input '{"owner":"native/kernel/component-3","folder":"/component"}'
thinair mirrorsThe owner is the app's address, as thinair files open answers it in at. The answer
names the mirror's path. An agent on your computer itself may mirror any app. An agent in
a VM mirrors an app in its own Profile with nothing asked, and an app in another Profile
only by your Allow. A Component is reached as its File is: by an agent whose Profile may
write that File, or by one on your computer itself.
thinair run
Claude Code in any Thinair login shell, and Codex in a VM's, run every command through
thinair run.
A command started inside a mirror runs in the owner, with its input, output, exit code,
Ctrl-C and window size as if it ran here. A command started anywhere else runs here as
usual.
Before a command goes, every edit the agent made has landed in the owner. Before it ends,
every change it made there has come back. When both sides changed the same file, the
owner's version wins, and the agent's is kept beside the mirror in <mirror>.conflicts/
and named in the next command's output.
What a command gets
- It runs as the VM's user, never as root.
- It takes none of the agent's secrets: only its language, terminal and colour settings.
- It gets the owner Profile's credentials only when another VM of that same Profile keeps the mirror. A Component's commands get none.
- What the owner sends lands only inside the mirror: never outside it, never through a
link, and never as a tool's own settings (
.mcp.json, Claude Code's settings and hooks, Codex's folder).
A read-only mirror takes no edit and runs no command. Untrusted code is worked on from a VM, never mirrored onto your computer itself.