Go to file
2025-10-07 20:11:02 -07:00
.cursor/rules basics 2025-09-15 13:13:41 -07:00
.vscode ignore bundle.js in searches 2025-10-02 13:00:21 -07:00
bin bring back type sniffing 2025-10-07 19:34:00 -07:00
lib upload command 2025-09-30 22:35:11 -07:00
nose always allow keyboards shortcuts 2025-10-02 21:47:30 -07:00
public update build.js 2025-10-06 22:13:15 -07:00
scripts yikes 2025-10-06 20:50:15 -07:00
src bring back type sniffing 2025-10-07 19:34:00 -07:00
test move everything 2025-09-29 21:18:39 -07:00
.gitignore persist app sharing 2025-09-29 20:43:13 -07:00
bun.lock reeeeeboooot 2025-09-22 14:55:32 -07:00
CLAUDE.md claude info 2025-10-07 10:50:01 -07:00
package.json keep us honest 2025-10-03 06:41:51 -07:00
README.md some ideas 2025-10-07 20:11:02 -07:00
tsconfig.json move everything 2025-09-29 21:18:39 -07:00

NOSE:pluto

Installation

  1. Make a fresh RPi image with a "nose" user.

  2. Clone this repo

  3. From the root of this repo, run:

    bun remote:install`

  4. When it's done (it'll reboot) visit:

    http://nose-pluto.local

And to make sure DNS is working:

http://ping.nose-pluto.local/
  1. 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:

https://wakamaifondue.com/

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

  • nose CLI
  • 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...?

Future Goals (need to be split into Phases)

  • nose can find your NOSEputer via mDNS/Bonjour
  • Shrimp!
  • CodeMirror Editor
  • cron tasks
  • prompt()
  • confirm()
  • faster boot (turn off stuff like CUPS)
  • SSD
  • NOSE App Store -- "There's an app for that" (browse + install carts)
  • System dashboard (CPU, memory)
  • Write Your Own Daemons (MUD? FTPd?)
    • Daemon Dashboard
  • cloud backup for projects
  • "sleep" / "wake" (disable monitor)
  • themes
  • pixel art boot animation