This is a repo with a collection of tools necessary to funnel a shell on a ship's host through a fakezod's %lick vane to allow shell access to the host via urbit webapp.
On init by the client urbit app, the backend app creates a shell process. Byte arrays are b64'd and wrapped in json, then passed from the process output into a unix socket in the pier directory. The urbit app uses %lick
to pass data between the frontend and backend, and the frontend displays decoded data using xterm.js
. Commands from the client are similarly encoded and passed to the backend, which passes them into the PTY session.
This repo contains a standalone Go script (urtty-be/
) which will connect to the lick socket and generate PTY sessions; note however that the path is hardcoded to a fakezod in the root dir. Just replace the sockPath
var in main.go
to use another ship.
Urbit apps are not yet sandboxed! Don't install this on a ship with anything else installed.
- Build the frontend:
./dev.sh
- Install app: In your fakezod or other ship,
|new-desk %urtty
,|mount %urtty
, copy the contents ofurtty-desk
into the mounted desk, then|commit %urtty
and|install our %urtty
- Run the backend:
cd urtty-be && go run main.go
- Log into ship, go to
/docket/upload
, selecturtty
desk and upload the./web
directory