Wippit Beta access →

Developer guide

You’ve installed wippctl + the wippit-publish skill. Here’s how to drive it by hand. The CLI is self-documenting — this is the curated tour.

# the two sources of truth — always current with your installed version
wippctl describe     # every command + flags, as JSON
wippctl cms model    # how a site is structured (components, types, gotchas)

Wire up your tenant

Redeem your invite code (see /redeem), then point wippctl at your workspace:

wippctl env add acme --server grpcs://wipp.it:443 --token wpt_XXXXXX_xxxx
wippctl env use acme
wippctl tenant info        # smoke test

Publish a site

A template is your site; it holds components, each a directory mounted at a URI. Conventional layout: base/assets, root/, errors by status.

wippctl cms template create site --display-name "Acme" \
  --data '{"site_name":"Acme","primary_color":"#0066cc"}'

wippctl cms component add site/base --uri-mount /assets --type static
wippctl cms component add site/root --uri-mount /       --type static

wippctl cms file write site/root/index.html --from ./dist/index.html
wippctl cms file write site/base/site.css   --from ./dist/site.css

wippctl cms template activate site     # first activation can omit --expected-etag

Inside any text file, Wippit etc. are substituted server-side at upload. Change them with cms template and components re-substitute automatically.

Publish a single-page app at a sub-path

An SPA is a spa component — on a URI miss within its mount it serves index.html (so client-side routers work). The one gotcha: build it with its base set to the mount, or assets 404.

# build with the mount as base — Vite:
vite build --base=/cotizacion/

wippctl cms component add site/cotizacion --uri-mount /cotizacion --type spa
wippctl cms file write site/cotizacion/index.html --from ./dist/index.html
wippctl cms template reload site     # publishes the new component, live

Adding or removing a component — then cms template reload — takes effect immediately on your live site. No redeploy.

Day–2: tokens, users, domains

wippctl token issue --name ci-acme --scopes admin
wippctl user create --email alice@acme.com --name "Alice"
wippctl role assign <user-uid> admin
wippctl tenant settings --update '{"primaryColor":"#0066cc"}'

# custom domain: add → publish the TXT it prints → verify → point an A record
wippctl tenant alias add acme.com
wippctl tenant alias verify acme.com

Troubleshooting

connection error / EOF — use grpcs://wipp.it:443 (TLS), not grpc://.
Unauthenticated — token expired or wrong env (wippctl env list).
expected_etag is required — another template is active; pass --expected-etag from cms template list --json.
404 from a custom domain — A record points here but no template is active for that tenant.

Anything confusing is a bug — tell us at beta@wippit.systems.

Ready when you are.

No workspace yet? Grab a beta invite and you’re publishing in minutes.

Request beta access →