# Quick start.

> A first Renest round trip is five steps: install the command-line tool, check the machine with renest doctor, pack a run that already worked to your drive, get a restore code from the web console, and run renest restore with that code on the other machine.

Canonical page: https://renest.ai/docs-quick-start.html

<h2 id="install">1 · Install the command-line tool</h2>

<p>It works on its own — no account, no card, and it never asks a server of ours for
permission to run. Its source is published in full and you may read, audit, modify and redistribute it;
the one thing the licence withholds is using it to run a commercial service competing with
the Renest hosted service (see <a href="docs-licensing.html">licensing</a>), so it is source-available rather than open source. The format specification and the
<a href="docs-escape-hatch.html">escape-hatch script</a> are the genuinely open
(Apache-2.0) parts.</p>

<pre># no account needed
$ uv tool install --upgrade renest
# put it on this shell's PATH
$ export PATH="$HOME/.local/bin:$PATH"</pre>

<p>The second line is not optional on a fresh machine. <code>uv</code> puts
<code>renest</code> in <code>~/.local/bin</code>, and on a box you just rented that
directory is not on your <code>PATH</code> yet — so typing <code>renest</code> answers
<code>command not found</code> and nothing tells you why. Opening a new shell also picks it
up. To keep it after a reboot, add the same line to your <code>~/.bashrc</code>.</p>

<p><code>--upgrade</code> is there on purpose: if you have installed <code>renest</code>
before, plain <code>uv tool install renest</code> leaves the old version in place and says
nothing, so it looks upgraded but is not. <code>--upgrade</code> moves it to the latest and
does nothing on a fresh machine.</p>

<p>It needs Python 3.11 or newer. Everything it rebuilds is pinned with
<a href="https://docs.astral.sh/uv/">uv</a>, which comes with it as a dependency. No
<code>uv</code> yet? <code>curl -LsSf https://astral.sh/uv/install.sh | sh</code> puts one
there first. On a proxy network, <code>export HTTPS_PROXY=http://host:port</code> (and
<code>ALL_PROXY</code>) first — <code>uv</code> and <code>curl</code> use only that, not the
OS proxy, or the install hangs with no error.</p>

<h2 id="check">2 · Check the machine first</h2>

<p>On its own, <code>doctor</code> gives the machine you're standing on a general check-up
— CPU features, memory, free disk, whether the GPU can actually be used — and says plainly
that it has nothing to compare against yet. The download speed test is skipped unless you
add <code>--no-skip-net</code>.</p>

<pre>$ renest doctor</pre>

<p>Point it at a nest's manifest and it answers the question that matters — <em>can this
machine take this particular setup?</em> — checking the driver and GPU against what the
nest needs. That check is what stops you renting a card the setup can't run on:</p>

<pre>$ renest doctor ./nests/nests/&lt;nest-id&gt;/manifest.json</pre>

<p>You don't have to run it before a restore: <code>renest restore</code> runs the same
check first on its own.</p>

<h2 id="pack">3 · Pack the run that already works</h2>

<p><strong>Get the run working first.</strong> Renest only captures setups that already
produced a result — it does not help you get an unfamiliar setup running. Once your image
workflow renders or your fine-tuning run finishes, pack it. <code>--dest hosted</code>
uploads it to your Renest drive as it packs; that needs an access key, which you create in
the web console under <strong>Settings → Access</strong> and give to the tool as
<code>RENEST_TOKEN</code> or in its config file (see
<a href="docs-cli.html#auth">Signing in to your drive</a>).</p>

<pre># image workflow (ComfyUI)
$ renest pack --dir ./run --workflow workflow-api.json --out ./nests --dest hosted

# fine-tuning (kohya_ss or LLaMA-Factory)
$ renest pack --dir ./run --framework kohya --run-record run.json --out ./nests --dest hosted</pre>

<p><code>--dir</code> is the folder holding your environment (the one with
<code>ComfyUI/</code> inside it) and <code>--out</code> is where the nest is written on this
machine: its manifest lands at <code>./nests/nests/&lt;nest-id&gt;/manifest.json</code>, and
the files beside it under <code>./nests/blobs/</code>. <code>--workflow</code> must be the
workflow exported in <strong>API format</strong> — in ComfyUI that's <em>Export (API)</em>;
the ordinary saved workflow is refused with a note saying so. For a fine-tuning run,
<code>--run-record</code> is the JSON record of the run that worked (<code>cwd</code>,
<code>argv</code>, <code>env</code>) — the recipe is read from there, so what gets packed is
what you actually ran. A finished pack prints one line starting
<code>Sealed ✓ nest &lt;nest-id&gt;</code>, with the file count, size, whether a dependency
lock was captured, and any warnings.</p>

<p>What comes out is a <em>nest</em>: a manifest listing every file with a fingerprint of
its bytes, plus the model weights, the custom-node source archived in full and pinned to
its commit, the dependency lock, and the workflow or training config that produced the
result. Not sure what it will pick up? <code>--dry-run</code> prints the plan and writes
nothing.</p>

<p>Prefer a button? The <a href="docs-plugin-nest-this-run.html">ComfyUI panel</a> packs
the workflow on your canvas to this machine's disk. It never uploads; to put that nest on
your drive, use <strong>Upload a nest</strong> in the web console and pick the folder it
wrote.</p>

<h2 id="code">4 · Get a restore code from the web console</h2>

<p>In the web console, open the nest and choose <strong>Restore</strong>. Pick how long the
restore code should last — <em>1 day</em>, <em>3 days</em> or <em>7 days</em> — and copy the
command the page gives you. The code works on any machine until it expires, so if a rented
box breaks you can paste it on the next one. You can revoke it from the console at any
time. Treat it like a password while it is valid.</p>

<h2 id="restore">5 · Restore it on the other machine, then start it</h2>

<p>On a fresh box — a different GPU, a different cloud, a month later. Renting one? The
<a href="docs-guide-runpod.html">RunPod</a> and <a href="docs-guide-vast.html">vast.ai</a>
guides cover starting the machine. Install the tool there (step 1), then paste the command
from step 4. It writes the code to <code>grant.json</code> and runs the restore:</p>

<pre>$ cat &gt; grant.json &lt;&lt;'RENEST_GRANT'
&#123; …your restore code… &#125;
RENEST_GRANT
$ renest restore --grant grant.json --dir ./run</pre>

<p>The restore checks the machine first, downloads every file and checks it against its
recorded checksum, installs the dependencies from the lock, then starts the app and runs the
packed workflow once. If the connection drops, run the same command again; files already on
disk that match are kept.</p>

<p>When it finishes it prints <em>What's next</em>: where your output lands and the command
that starts the app. <code>renest start</code> runs that command for you;
<code>--listen 0.0.0.0</code> makes the app reachable from your own browser once you have
exposed its port in your provider's panel:</p>

<pre>$ renest start --dir ./run --listen 0.0.0.0</pre>

<p>To re-check the restored folder later, <code>renest verify</code> prints
<code>Verified (… files byte-checked)</code>, or
<code>Byte check failed: … missing, … with the wrong bytes or size</code> — add
<code>--json</code> to see exactly which files.</p>

<p>Keeping nests in a bucket of your own instead of the drive also works: pack with
<code>--dest s3</code> and sign the code on your own computer with <code>renest
presign</code>. See <a href="docs-restore.html#codes">Restore anywhere</a>.</p>

<h2 id="next">Where to next</h2>

<ul>
  <li><a href="docs-after-restore.html">After the restore</a> — finding your output and running the app again.</li>
  <li><a href="docs-troubleshooting.html">If a restore stops</a> — what each refusal and failure means, and what to do.</li>
  <li><a href="docs-capture.html">Capture a run</a> — what <code>pack</code> picks up, and what it deliberately doesn't.</li>
  <li><a href="docs-restore.html">Restore anywhere</a> — the two kinds of restore code, resuming, and what the pre-flight check refuses to do.</li>
  <li><a href="docs-concepts.html">Core ideas</a> — what a nest, a manifest and a hand-off actually are.</li>
  <li><a href="docs-cli.html">CLI reference</a> — every command and the flags that matter.</li>
</ul>
