Skip to content

Repository files navigation

pages

Minimal static Page publishing. One Go command has three product actions:

  • pages serve accepts authenticated Uploads on loopback and writes Pages into a Public Root.
  • pages publish publishes one HTML file or zip file and prints its public URL or local Page directory.
  • pages generate-token issues a Token for the Default or one Named Identity.

pages skill prints version-matched instructions for agents.

pages keeps no publication archive, revision history, rollback state, or database.

Install

Install the binary with the Go toolchain:

go install github.com/suraciii/pages@latest

For a reproducible install, use an exact release tag:

go install github.com/suraciii/pages@v0.0.1

Make sure Go's binary install directory is on your PATH.

Check the installed version:

pages --version

TL;DR

Create one Page file:

printf '<!doctype html><title>Report</title><h1>Ready</h1>\n' > report.html

Local Publish

Local Publish writes directly into a Public Root. It needs no Token or service:

pages publish --file report.html --slug report --dest pages-public
<current-directory>/pages-public/report/

Remote Publish

Remote Publish adds a Token, pages serve, and a static host. On the prepared service host:

pages generate-token
pages serve --dest /srv/pages/public

Use this minimal Caddyfile:

pages.example.com {
    @upload method POST
    reverse_proxy @upload 127.0.0.1:3103

    @internal path /.pages/*
    respond @internal 404

    root * /srv/pages/public
    file_server
}

Set PAGES_UPLOAD_TOKEN to the Token printed by generate-token, then Publish:

pages publish --file report.html --slug report \
  --dest https://pages.example.com
https://pages.example.com/report/

See Getting Started and Deployment for host setup, permissions, limits, headers, and process management.

How It Works

A remote Publish sends one Upload:

POST <destination>/<slug>
Authorization: Bearer <secret> | Bearer <identity>.<secret>
Content-Type: text/html; charset=utf-8 | application/zip

The service derives the Default or Named Identity from the verified Token. It never takes Identity from the upload path, request body, or a custom header. The Default Identity stays hidden:

<public-root>/<slug>/
<public-root>/@<identity>/<slug>/

The Publisher verifies and prints the public URL:

<destination>/<slug>/
<destination>/@<identity>/<slug>/

A local Publish writes directly into a Public Root and does not use a service or network. --identity selects an optional Named Identity. Both modes prepare a complete Page before they replace the old Page.

See the pages publish command contract for Destination syntax, defaults, and input precedence.

Documentation

  • Getting Started sets up remote Publish from install to a live Page.
  • Publishing defines the Publish contract and limits.
  • Configuration lists flags, environment variables, and config files.
  • Deployment covers systemd, Docker, and the reference Caddy configuration.
  • Architecture explains the write path and Identity boundary.
  • Design Index links every design specification.

Agent Skill

The pages skill is a stable bootstrap. It installs or finds the CLI, then reads the complete version-matched skill from pages skill. From a repository checkout, install the bootstrap into the agent skill directory:

mkdir -p ~/.agents/skills
cp -r skills/pages ~/.agents/skills/

The bootstrap is one file and does not copy operational command syntax. CLI updates automatically provide their matching instructions through pages skill; the bootstrap does not need to be copied again.

Development

Run the repository gate and build the binary:

make ci
mkdir -p dist
go build -o dist/pages .

Docker

pages does not publish an official container image. Check out the release tag and build the included Dockerfile:

git checkout v0.0.1
docker build -t pages:0.0.1 .

See Deployment for a complete runtime configuration.

License

pages is released under the GNU AGPL-3.0.

About

Minimal static page publishing for agents

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages