@fabiofiorita/porcelain (0.75.1)
The Porcelain review server and bundled web app for a plain Node installation.
Quick start
The host needs Node 24+, Git, and the file watcher supported on its platform:
npx @fabiofiorita/porcelain@latest serve
# Permit other devices on the local network to connect:
npx @fabiofiorita/porcelain@latest serve --lan
# Install this exact CLI version as a user service (Linux):
npx @fabiofiorita/porcelain@latest service install
# Update the installed service to the newest published version:
porcelain service update
State lives in ~/.porcelain/; pass --data-directory to keep it somewhere
else. Use porcelain serve --help for all options.
Nothing can reach the server until you pair a device. On the machine running
it, porcelain pair "Phone" --address <the address serve printed> prints a
link that works once; open it on the device itself. The address must be one
this server answers at, and the not-paired screen in the browser shows the
whole command with that device's own origin already filled in. porcelain devices lists what is paired and
porcelain revoke <id> ends it. Coding agents connect over MCP with
porcelain mcp, which needs no credential: it reaches a local socket only a
process on this machine can open.
Background service
porcelain service install|status|update|recover|uninstall manages a systemd
user service on Linux. Install persists the invoked package version outside the
npx cache and writes a porcelain command to ~/.local/bin that runs it; it
prints how to add that folder to PATH when it is missing, and leaves alone a
porcelain there that it did not write.
porcelain service update installs the newest published version through the
same updater as Settings → Update, waits for it to finish and says whether it
updated, was already current or failed. npx @fabiofiorita/porcelain@<version> service update installs that exact version instead.
porcelain share lan on shares the service on the local network and
porcelain share shows how it is shared. Sharing is kept in the data
directory, so it survives restarts and updates.
Updates stop the service and back up SQLite before the new runtime can migrate
it. An older CLI refuses to replace a newer runtime unless
service update --allow-downgrade is explicit. Uninstall removes the
service, the runtime and the porcelain command while retaining data,
configuration, logs and database backups. Run service commands as the regular
user, never with sudo.
Repository development
pnpm build:package
# Inspect the exact publishable archive:
cd dist-porcelain && npm pack
dist-porcelain/ is generated from a completed web and server build. Do not
edit it by hand.