What it is
Password-protected personal cloud — browse, upload, download files from ~/NAS/ from any device. FastAPI + LaunchAgent + SSH tunnel.
Version history
Straight from the project’s own card data — what each version added.
Password auth, file browser, upload, folders, LaunchAgent auto-start, SSH tunnel, da.gd shortlink.
By the numbers
Measured from the real working folder ~/NAS/ — not a claim, a count.
Mostly: —
What broke, and what I’d change
Not written yet. This is the part only I can write — what actually went wrong, and what I’d do differently. It lives in builds/reflections/isaacnas.md (see _TEMPLATE.md); as soon as that file has words in it, this section fills in on the next build.
Everything else on this page — the spec, the version history, the file counts — is generated from the project’s own build notes and files, so nothing here is guesswork.
Build spec
The project’s own build notes, rendered. Open the raw .md ↗
Show the spec
IsaacNAS — Personal Cloud
Password-protected personal cloud file server. Drop files in ~/NAS/ and they're instantly accessible from any device.
Stack
- Backend: FastAPI + uvicorn (Python 3.14)
- Auth: Session-based cookie auth
- UI: Single-page dark-themed file browser (HTML/CSS/JS inline)
- Tunnel: localhost.run SSH reverse proxy for internet access
- Redirect: GitHub Pages meta-refresh → da.gd shortlink
- Daemon: macOS LaunchAgent (com.isaac.nas), auto-starts on login
Features
- Password login
- Directory browsing with breadcrumbs
- File download (direct link)
- File upload (multipart form)
- Create folders
- Auto-start on login via LaunchAgent
- SSH tunnel for internet access
- da.gd/isaacnas4 shortlink
Key code
server.py— FastAPI app with all routeslauncher.py— Starts server + tunnel + updates GitHub Pages redirectrun-server.sh— Shell wrapper that strips PYTHONPATH
How it works
- LaunchAgent starts
run-server.shon login - Server binds to port 8777
- SSH tunnel exposes port to internet via localhost.run
- GitHub Pages redirect page updated with new tunnel URL
- da.gd/isaacnas4 → GitHub Pages → tunnel → server