| .cursor/rules | ||
| .vscode | ||
| bin | ||
| lib | ||
| nose | ||
| public | ||
| scripts | ||
| src | ||
| test | ||
| .gitignore | ||
| bun.lock | ||
| CLAUDE.md | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
NOSE:pluto
Installation
-
Make a fresh RPi image with a "nose" user.
-
Clone this repo
-
From the root of this repo, run:
bun remote:install`
-
When it's done (it'll reboot) visit:
And to make sure DNS is working:
http://ping.nose-pluto.local/
- Have fun!
Local Dev
Running the server will create ~/nose for you to play with.
bun install
bun dev
open localhost:3000
Production Dev
Make sure you bundle the JS:
bun run bundle
If you want to test (or run) production with DNS features, use NO_DNS:
env NO_DNS=1 NODE_ENV=production bun start
You can also use the package commands:
# run without DNS
bun prod-nodns
# run normally
bun prod
Commands
Commands can return one of these types:
string{ error: string }{ html: string }{ text: string }
They can also throw to display an error.
Additionally, you can return JS that gets immediately run in the browser using script::
{ html: string, script: string }{ text: string, script: string }{ script: string }
Fonts
Use this to examine what's inside the C64 .woff2 font file in public/vendor:
Pluto Goals: Phase 1
- Hosts valtown-style Bun apps (for your home network)
- Provides a NOSE terminal/shell GUI
- Runs one-shot TypeScript commands (via NOSE terminal)
- Has a 960x540 (16:9) virtual screen size that scales to the actual size of the display
- Runs on a Raspberry Pi 5
Pluto Goals: Phase 2
noseCLI- game/bin/www cartridges
- public tunnel for your NOSE webapps
- public tunnel lives through reboots
- [o] tunnel to the terminal -- Not doing this for now!
- web browser
- browser commands
- remember your "mode"
- status bar on terminal UX
- quickly open the current webapp
- "project"-based rehaul
- self updating NOSE server
pub/static hosting in webapps- upload files to projects
- [-] pico8-style games
- init/update/draw
- simple drawing api
- gamepad support
- sounds
- maps
- etc...?