nose-pluto/README.md
2025-10-01 22:19:52 -07:00

2.0 KiB

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

  • public tunnel for your NOSE webapps
    • public tunnel lives through reboots
    • tunnel to the terminal
  • remember your "mode"
  • nose CLI
  • status bar on terminal UX
  • "project"-based rehaul
  • self updating NOSE server
  • pub/ static hosting in webapps
  • upload files to projects
  • game/bin/www cartridges
  • [-] pico8-style games
    • init/update/draw
    • simple drawing api
    • gamepad support
    • sounds
    • maps
    • etc