taupocket/[DEPRECATED-REDUNDANT] Decision Summary_ Portable Snapshot Sandboxes for.md

270 lines
12 KiB
Markdown
Raw Permalink Normal View History

2026-08-23 15:45:29 +01:00
> **⚠️ DEPRECATED — REDUNDANT IMPLEMENTATION**
>
> This document is kept for historical reference only. It was the first draft of the taupocket design, generated by Perplexity and constrained by a heavy-handed prompt to "eliminate Hermes / Debian / Nix / QEMU / filesystem snapshots / duplicate substrates" — most of which were never on the table, and several of which (`smolvm hermes start`, `smolvm sandbox snapshot …`) are first-class smolvm features.
>
> **Superseded by [`TUTORIAL.md`](./TUTORIAL.md)**, which:
>
> - Uses `smolvm sandbox {create, exec, snapshot, file, port, shell, …}` directly instead of designing a custom snapshot model on top of smolvm's own snapshot primitives.
> - Documents how to import `/teacher-mode` and a custom `~/.tau` into a sandbox (`file upload` + tarball, or `--mount` + `--writable-mounts`).
> - Leaves the door open to Pi and other bundled agents (`smolvm pi start`, `smolvm hermes start`, …) instead of single-vendor-locking on Tau.
> - Covers the three export tiers honestly: snapshot-tree copy, workspace tarball, and `smolvm pack` (the last only on builds that ship it — this host's build does not).
>
> If you're landing here from a search result, **read `TUTORIAL.md` instead.** The recipe in its §8 is the whole project.
---
<img src="https://r2cdn.perplexity.ai/pplx-full-logo-primary-dark%402x.png" style="height:64px;margin-right:32px"/>
# eliminate hermes from the picture, debian is also a non-portable option. The agentic framework is tau, so eliminate all burden and duplicate options that suppose more time / space /resouces / overburden / non-portability. Eliminate also all mentions to discarded / legacy / non-viable options
Heres a streamlined, portableonly version that centers Tau and smolVM, drops Hermes/Debian/Nix/QEMU/filesystem snapshots, and avoids duplicate substrate options.[^1][^2][^3][^4][^5]
***
# Portable Tau Sandboxes with smolVM
## Overview
This project defines a **portable snapshot sandbox** for Hugging Faces Tau coding agent using **smolVM** as the only runtime substrate.[^2][^5][^1]
The goal is to keep the design minimal: one agentic framework (Tau), one portable machine format (`.smolmachine`), and a small Git + changelog overlay for learning history.[^3][^4][^5]
Key properties:
- **Tau** is a minimalist terminal coding agent that reads files, edits code, runs commands, and maintains durable session history.[^4][^6][^3]
- **smolVM** packs a Linux VM into a single portable file (`.smolmachine`) with sub200ms cold boot and hardware isolation per workload.[^7][^8][^1][^2]
- **Snapshots** are just `.smolmachine` files (and optional Git commits) that can be copied, versioned, and restored on any supported host, with no dependency on host filesystem features.[^8][^5][^1][^2]
No other substrates, OS assumptions, or hostspecific snapshot mechanisms are part of this design.
***
## Core Design
### Single Agentic Framework: Tau
Tau is a small, layered coding agent:[^6][^3][^4]
- `tau_ai`: providerneutral event stream from any supported language model endpoint.[^3][^4][^6]
- `tau_agent`: portable agent “brain” (messages, tools, events, loop, harness, sessions).[^4][^6][^3]
- `tau_coding`: terminal application (CLI/TUI) with file/shell tools, skills, prompts, and ondisk sessions.[^9][^3][^4]
This project treats Tau as:
- The **only** agentic framework.
- Both a working coding assistant and an educational blueprint for agent architecture.[^9][^6][^3][^4]
### Single Runtime Substrate: smolVM
smolVM is a CLI tool to build and run **portable, lightweight, selfcontained VMs**:[^1][^2][^7][^8]
- Subsecond (often <200ms) cold boot times.[^2][^7][^8][^1]
- Each workload gets its own kernel boundary, not just container namespaces.[^7][^8][^1][^2]
- A stateful VM can be packed into one `.smolmachine` file that runs anywhere the architecture matches.[^10][^8][^1][^2][^7]
This project uses smolVM as the **only** sandbox substrate:
- No containers, no other hypervisors, no filesystem snapshots.[^5]
***
## Portable Snapshot Model
### Snapshot as a `.smolmachine` File
A snapshot is a single portable artifact:
- A `.smolmachine` file containing:
- Minimal Linux userland.
- Tau installed via `uv tool install tau-ai` or equivalent.[^6][^3][^4]
- A `/workspace` directory for code, skills, curricula, and logs.[^5][^1][^2]
Creation flow (coarsegrained snapshot):
1. Run Tau inside a smolVM machine until a learning milestone or stable state is reached.
2. Stop the machine (or flush state to disk).
3. Pack or copy the VM as a `.smolmachine` using smolVMs `pack` or `machine` commands.[^10][^1][^2]
4. Save the artifact under a meaningful name, e.g. `tau-sandbox-m1.smolmachine`.[^5]
Restoration flow:
1. On any supported host, run smolVM against the chosen `.smolmachine`.
2. Tau starts inside the VM, seeing exactly the same environment and `/workspace` state as at snapshot time.[^8][^1][^2]
3. A restore event is logged in the changelog (see below).
No hostspecific snapshot APIs or OS assumptions are needed; the `.smolmachine` file is the snapshot.
### Optional Git Overlay (Fine-Grained History)
Inside `/workspace`, a Git repo captures **finegrained project history**:[^3][^4][^5]
- Tau skills (Markdown), prompts, and teachermode scripts.
- Exercises, curriculum materials, and documentation.
- Code created or modified during sessions.
Typical pattern:
- After a session, the agent or supervising process identifies “promotable” changes (e.g. new skill, refactor).
- These changes are committed inside the VM, resulting in a Git history that lives inside `/workspace` and travels with the `.smolmachine`.[^11][^3][^5]
Git is optional but strongly recommended:
- It provides finegrained diffs and branches inside a snapshot.
- It is substrateagnostic and works entirely within the VM.
***
## Teacher Mode \& Learning Timeline
Although this design removes references to specific host assistants, it still assumes **teachermode behavior** inside Tau:
- Teacher skills (stored as Markdown in `/workspace/skills`) describe educational flows:
- Orientation: explore Tau architecture and logs before editing code.
- Safe experimentation: practice with Git branching and snapshot restore.
- Selfmodification: let Tau propose changes to skills under guardrails.[^9][^6]
- Taus TUI/CLI and skill system are used to implement:
- Socratic prompts (“Predict what happens if we run this command”).
- Reflection (“Summarize what changed since the last snapshot”).
- Gradual autonomy (from guided tasks to openended selfmodifying experiments).[^4][^3][^9]
### Changelog for Snapshots
In addition to Git, a simple **changelog file** (e.g. `changelog.jsonl` or `CHANGELOG.md` in `/workspace`) records:
- For each snapshot creation:
- Timestamp.
- Snapshot ID (`.smolmachine` filename and hash).
- Current Git commit (if present).
- Short summary of the learning milestone (e.g. “Added basic Git teacher skills”).[^5]
- For each snapshot restore:
- Timestamp.
- Snapshot ID restored.
- Reason (“Replay intro module”, “Roll back broken experiment”).[^5]
This keeps mechanical state (snapshot file) and conceptual state (why we care about it) aligned without any external framework.
***
## Operational Flow (Single-Substrate, Minimal-Overhead)
### 1. Build the Base Machine
On a host with smolVM installed:[^1][^2][^8]
1. Use `smolvm machine run` or `smolvm pack create` to derive a base environment from a standard image (e.g. `python:3.12-alpine`).[^2][^8][^10][^1]
2. Inside the VM, install Tau via `uv tool install tau-ai`.[^6][^3][^4]
3. Create `/workspace` and initialize a Git repo if desired.
4. Save this as `tau-sandbox-base.smolmachine`.
From now on, every sandbox session runs inside clones or derivatives of this base machine.
### 2. Run Tau Sessions
For each learning session:
1. Start a smolVM machine from `tau-sandbox-base.smolmachine` or a derived snapshot (e.g. `tau-sandbox-m1.smolmachine`).[^8][^1][^2][^5]
2. Run Tau from `/workspace`, connecting it to a language model provider via Taus `/login` mechanism.[^3][^4][^9]
3. Use Taus tools and skills to explore, edit, and run code; logs and session exports remain inside the VM.[^4][^6][^3]
### 3. Create a Snapshot
When a meaningful state is reached:
1. Ensure `/workspace` is consistent (optional: run tests, lint).
2. Stop the machine or persist state.
3. Use smolVM to pack or copy the VM into `tau-sandbox-mN.smolmachine`.[^10][^1][^2][^8]
4. Inside `/workspace`:
- Commit any promoted changes to Git.
- Append a changelog entry describing the snapshot.[^5]
### 4. Restore a Snapshot
To revisit a previous milestone:
1. Pick the desired `.smolmachine` file.
2. Start a new machine from that artifact.
3. Run Tau; it sees the restored `/workspace` and Git state.
4. Append a restore event to the changelog to keep the timeline coherent.[^5]
***
## Roadmap (Minimal Version)
### Phase 1 Base Tau Machine
- Install smolVM on a supported host.[^1][^2][^8]
- Build `tau-sandbox-base.smolmachine` with:
- Linux image.
- Python + `uv`.
- Tau installed (`uv tool install tau-ai`).[^6][^3][^4]
- Empty `/workspace` (Git optional).
### Phase 2 Snapshot \& Changelog Wiring
- Define a naming convention for snapshots (e.g. `tau-sandbox-m1`, `m2`, …).
- Implement scripts or simple commands to:
- Create new `.smolmachine` snapshots.
- Compute checksums for integrity.
- Add a `changelog` file inside `/workspace` with entries for snapshot create/restore.[^5]
### Phase 3 Teacher Skills \& Curriculum
- Create Tau skills for:
- Intro to Tau architecture and session logs.
- Git basics and snapshot reasoning.
- Safe selfmodification patterns.[^9][^3][^4]
- Run sessions inside the smolVM sandbox using these skills; snapshot after each module.
### Phase 4 Self-Modifying Tau Experiments
- Let Tau propose changes to skills and curriculum files under guided prompts.
- Use Git commits + `.smolmachine` snapshots as guardrails:
- Each experiment is attached to a specific snapshot tag.
- Revert to previous tags when experiments fail.
***
This version keeps only Tau + smolVM + Git/changelog, with snapshots as `.smolmachine` files. There are no references to Hermes, Debian, Nix, QEMU, filesystemdependent snapshotting, or alternative substrates, so overhead and nonportability are minimized while preserving a clear agentic/educational story.[^2][^1][^3][^4][^5]
<span style="display:none">[^12][^13][^14][^15][^16][^17]</span>
<div align="center"></div>
[^1]: https://github.com/smol-machines/smolvm
[^2]: https://daniliants.com/insights/github-smol-machines-smolvm-portable-lightweight-vms/
[^3]: https://www.sourcepulse.org/projects/32201187
[^4]: https://www.everydev.ai/tools/tau-ai
[^5]: Decision-Summary_-Portable-Snapshot-Sandboxes-for.md
[^6]: https://techbytes.app/posts/huggingface-released-tau-a-coding-agent-2/
[^7]: https://www.youtube.com/watch?v=2PoW1OWbfkw
[^8]: https://byteiota.com/smolvm-portable-vms-boot-in-200ms-solve-works-on-my-machine/
[^9]: https://www.youtube.com/watch?v=qo1QNxWcm28
[^10]: https://github.com/smol-machines/smolvm/blob/main/AGENTS.md
[^11]: https://addyosmani.com/blog/self-improving-agents/
[^12]: https://deepwiki.com/huggingface/tau/7-cli-and-print-mode
[^13]: https://deepwiki.com/huggingface/tau/2.3-tau_coding:-coding-agent-application
[^14]: https://daily.dev/posts/github---smol-machines-smolvm-tool-to-build-run-portable-lightweight-self-contained-virtual-mac-ypwlwu4wm
[^15]: https://orply.com/articles/hugging-face/tau-crash-course-the-python-port-of-pi-2c258178
[^16]: https://reporank.net/vi/repo/huggingface-tau.html
[^17]: https://www.youtube.com/watch?v=EjgFvXTJhjA\&vl=ru