Skip to content

Releases

StarTunnel v0.4.2

Choose a tag to compare

@github-actions github-actions released this 04 Nov 02:18

Release notes generated using Release Notes Scribe

What's Changed

  • Fixed Docker bootstrap issues affecting fresh builds.
  • Updated dependencies and bundled Swagger UI, with tested minimum dependency versions.
  • Added public release verification without GitHub or registry credentials, including anonymous container image pulls.
  • Added production preflight checks for image identity, configuration, and Linux secret-file readability before longer release validation.
  • Expanded upgrade validation to cover v0.4.1 alongside v0.2.0, v0.3.0, and v0.4.0.
  • Updated setup and maintenance guides for v0.4.2, with automated checks to keep release references and links consistent.

Full changelog: v0.4.1 → v0.4.2

StarTunnel v0.4.2

This release fixes fresh Docker builds and updates application, test, database,
and proxy dependencies. Authored Python and npm requirements now use tested
minimum versions. Lockfiles and release image digests remain exact.

Update an existing instance

  1. Read the v0.4.2 server update guide.
    Download the attached release.json. Use its exact source commit and Linux
    amd64 image digest. Supported published predecessors are v0.2.0, v0.3.0,
    v0.4.0, and v0.4.1. Older installations must first follow the
    tagged v0.2.0 guide.
  2. Install Python 3.15.2 or later before running the host upgrade tools. The
    application image includes Python 3.15.2. Make a fresh backup, test its
    restore, and keep the previous source, service images, configuration,
    secrets, and backup outside the server.
  3. Check out the source commit from release.json. Load the existing production
    configuration. Preview the upgrade, then apply it with
    --apply --backup-verified after the backup checks. There are no new
    migrations after v0.4.0. Data and credentials are preserved.
  4. Review explicit POSTGRES_IMAGE and CADDY_IMAGE overrides. This release
    supplies PostgreSQL 18.6 and Caddy 2.11.7 image references in
    docker/images.env.example.
    Existing overrides remain in effect. Keep each reviewed version tag and
    digest together when updating an override. PostgreSQL remains in major
    version 18. Re-create the selected database and included Caddy services
    through the configured Compose project, then verify health and HTTPS.
  5. Update each agent and administrator client from the upgraded instance with
    startunnel update. Run startunnel version, startunnel config, and
    startunnel me. Administrators run startunnel admin config and
    startunnel admin me. Existing keys remain valid. The minimum official CLI
    remains v0.3.0. The standalone CLI still supports Python 3.10 or later.
    This release requires no new CLI command or request field.
  6. Repeat external administrator and two-agent checks, inspect operation
    receipts and audit records, and make a new backup after verification.

Upgrades from v0.2.0 or v0.3.0 must also apply the
v0.4.0 credential-cap and proxy instructions.
Those upgrades apply tunnels.0011, which has no reverse operation.

New installations can use the
v0.4.2 setup index.
Publication does not update an installed instance.

After updating PostgreSQL, review the GIN-index statistics check in the
PostgreSQL 18.6 migration notes.
StarTunnel's message table has a GIN index. If its row-count statistics are
invalid, refresh them with a manual ANALYZE as directed by those notes.

Fresh source builds

The old PDM 2.29.3 bootstrap could install an incompatible Unearth release and
then fail before installing application dependencies. Both Docker bootstrap
stages now use pdm>=2.29.5. Source CI checks fresh Alpine production and
Debian test dependency installs with BuildKit caching disabled.

Custom builds must replace the old PDM_VERSION build argument or environment
override with PDM_REQUIREMENT. Supply a complete requirement, such as
pdm>=2.29.5. Published runtime images already contain their application
dependencies and need no PDM bootstrap at startup.

Dependency and validation changes

Python and npm manifests use minimum-version requirements without upper bounds.
Exact lockfile resolutions still define each tested application and asset set.
A later dependency resolution requires validation before publication.

The update includes Django 6.1.3, django-ninja 1.7.3, Psycopg 3.3.7,
Pydantic 2.14.2, sqlparse 0.6.1, Swagger UI 5.34.1, and updated test tools.
Python 3.15.2, Django 6.1.3, and PostgreSQL 18.6 include upstream security
fixes. Caddy 2.11.7 includes proxy and streaming fixes.

sqlparse remains a Django dependency. Version 0.6.1 is its final upstream
release. This release does not replace Django's parser or add a compatibility
layer. Follow Django's upstream maintenance decision for a future change.

Release tooling checks public downloads and image identity, validates production
inputs before long proofs, and checks current guide references. Equal helper
build inputs share a build. The proxy test image installs Chromium without the
other browser engines or documentation tools.

Container checks also cover the test settings import path and release-test
isolation from host Git state. Dependency test repairs keep fault injection
local to its concrete database connection and preserve cleanup checks.

Rollback

Keep the previous source, immutable application and service images,
configuration, secrets, and verified pre-upgrade backup until external checks
pass. If recovery is required, stop writers and restore these matching inputs
together. Recovery loses writes made after the backup. Do not reverse
tunnels.0011 or use a pre-v0.4.0 image against its migrated database. See
backup recovery.

Deployment record

Source commit: 8ee40585f9bc2f04881769553522a933d1795336

Image: ghcr.io/btfranklin/startunnel@sha256:b4e6f56e20fb320edd852706d00d6ddbd4c084915b2ca3c3da59274be649c11c

Validation: https://github.com/btfranklin/startunnel/actions/runs/41757766081

StarTunnel v0.4.1

Choose a tag to compare

@github-actions github-actions released this 25 Oct 21:17

Release notes generated intelligently using Release Notes Scribe

What's Changed

  • Added opt-in PostgreSQL connection-pool metrics and categorized database failure counters to help diagnose contention, timeouts, and connection errors without exposing sensitive data.
  • Improved load-test reliability and reporting with lower-overhead monitoring, transport errors grouped by operation, and earlier expiration of idle client connections.
  • Strengthened release validation with production-installation checks, exact source and image verification, and retained results for failed attempts. Diagnostic runs cannot qualify as release evidence.
  • Added release-status timing reports and safe cleanup of disposable local caches while preserving validation evidence.
  • Updated and pinned dependencies, including certifi to remove compromised certificate authorities, plus bundled HTMX and Swagger UI assets.
  • Tooling requirement: repository host scripts now require Python 3.15.
  • Refined the website footer and added author credit.

Full changelog: v0.4.0 → v0.4.1

StarTunnel v0.4.1

This release updates the application and host tools to Python 3.15, refreshes
locked dependencies, and adds strict type checks for all Python source files.
It also reduces release helper build cost, records safe load measurements, and
keeps explicit proof attempts and timing records for release validation.

Update an existing instance

  1. Read the v0.4.1 server update guide.
    Download the attached release.json. Use its exact source commit and Linux
    amd64 image digest. Supported published predecessors are v0.2.0, v0.3.0,
    and v0.4.0. Older installations must first follow the
    tagged v0.2.0 guide.
  2. Install Python 3.15 or later on the host before running the upgrade tools.
    The official application image includes its Python runtime. Make a fresh
    backup, test its restore, and keep the old source, image, configuration,
    secrets, and backup outside the server.
  3. Check out the source commit from release.json. Load the existing production
    configuration. Preview the upgrade, then apply it with
    --apply --backup-verified after the backup checks. There are no new
    migrations after v0.4.0. Data and credentials are preserved.
  4. Update each agent and administrator client from the upgraded instance with
    startunnel update. Run startunnel version, startunnel config, and
    startunnel me. Administrators run startunnel admin config and
    startunnel admin me. These commands confirm authentication with the
    existing keys. The minimum official CLI remains v0.3.0; the standalone CLI
    still supports Python 3.10 or later. This release requires no new CLI command
    or request field.
  5. Repeat external administrator and two-agent checks, inspect operation
    receipts and audit records, and make a new backup after verification.

Upgrades from v0.2.0 or v0.3.0 must also apply the
v0.4.0 credential-cap and proxy instructions.
Those upgrades apply tunnels.0011, which has no reverse operation. Re-create
the included Caddy service and check explicit trusted-proxy settings as directed.

New installations can use the
v0.4.1 setup index.
Publication does not update an installed instance.

Runtime and validation changes

The application uses Python 3.15 and updated locked dependencies. Middleware
uses scoped request context. The load driver uses scoped async tasks. Strict
type checks cover application code, migrations, tests, scripts, and examples.

Release load helpers contain only the production dependencies and proof source
they need. Scoped BuildKit caches reduce repeated dependency work. Each helper
still builds from and verifies the current source. Candidate identity is checked
before expensive proof work and again at completion.

Load reports include safe numeric resource, database-pool, scheduling, and
collector measurements. Transport failures retain public exception classes
without exception text or request data. HTTP failures retain operation and status
counts. Pool request errors, connection errors, and lost connections remain
separate. Handled database failures use fixed cause categories. Client test connections expire before
the server's idle-close boundary. Load acceptance limits are unchanged, and
transport failures still fail the proof. Pool sampling remains disabled outside
proof runs.

Proof artifacts retain run and attempt identities, file checksums, cleanup
results, and failed attempts. Release status reports show source CI, candidate
identity, selected evidence, cache results, and elapsed time. A controlled lock
diagnostic cannot be used to promote a release.

Rollback

Keep the previous source, immutable image, configuration, secrets, and verified
pre-upgrade database backup until external checks pass. If recovery is required,
stop writers and restore these matching inputs together. Recovery loses writes
made after the backup. Do not reverse tunnels.0011 or use a pre-v0.4.0 image
against its migrated database. See
backup recovery.

Deployment record

Source commit: eb45ffdfb95f17d1eec42d509b96690a44ce3aa4

Image: ghcr.io/btfranklin/startunnel@sha256:a639b2f248cb78f2e3a496a9b993bc8231e927793a255b5b46e983a7d81454f6

Validation: https://github.com/btfranklin/startunnel/actions/runs/40233576042

StarTunnel v0.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 01:32

Release notes generated intelligently using Release Notes Scribe

What's Changed

  • Added a per-credential limit of 100 non-retired tunnels by default. /api/v1/me now reports instance and credential limits alongside tunnel usage, with clearer quota errors.
  • Added admin API and CLI tools to filter tunnels by creator and explicitly retire selected tunnels created by a revoked credential, stopping shared-address access.
  • Activity waits now reject invalidated access on the next database read after a tunnel address is rotated or the tunnel is retired.
  • Strengthened PostgreSQL protections against runtime changes to stored history and retry receipts.
  • Reduced memory use for cycle listings and search by fetching bounded previews and snippets instead of full message payloads.
  • Hardened CLI handling of oversized and malformed responses while preserving safe, structured errors. Added descriptive help for every agent command.
  • Made API error definitions consistent, including internal_error, and standardized missing admin resources on HTTP 404.
  • Reply retries now reuse the stored event position, preserving the original activity cursor without an extra event lookup.
  • Tightened Caddy proxy trust to the exact peer on a dedicated network and excluded local private files from Docker build contexts.
  • Expanded published-release upgrade checks through v0.3.0 and clarified upgrade, maintenance, and security guidance.

Full changelog

StarTunnel v0.4.0

This release strengthens database history and retry protection, limits tunnel
creation by each credential, and adds an explicit admin command to recover
capacity after key revocation. It also fixes wait access checks, bounds CLI
response reads, reduces read queries, and corrects operator and client guidance.

Update an existing instance

  1. Read the v0.4.0 server update guide.
    Download the attached release.json. Use its exact source commit and Linux
    amd64 image digest. The supported published predecessors are v0.2.0 and
    v0.3.0. For v0.1.0 or older installations, first follow the
    tagged v0.2.0 guide.
  2. Make a fresh backup, test its restore, and keep the backup, old source,
    image, configuration, and secrets outside the server. Plan a maintenance
    window. Read the rollback requirement below before applying the migration.
  3. Check out the source commit in the release record. Load the existing
    production configuration. Check the proxy settings below. Preview the
    upgrade, then apply with --apply --backup-verified after the backup checks.
    Migration tunnels.0011 adds database guards. It does not reset tunnels or
    delete content. Re-create the included Caddy service with the new stack.
  4. Update each agent and administrator client from the upgraded instance with
    startunnel update. Run startunnel version, startunnel config, and
    startunnel me. Admin users run startunnel admin config and
    startunnel admin me. Existing keys remain valid. The minimum official CLI
    remains v0.3.0; use v0.4.0 for the new commands and response definitions.
  5. Repeat external administrator and two-agent checks, inspect the operation
    receipts and audit records, and make a new backup after verification.

New installations can start with the
v0.4.0 setup index.
A source push or published release does not update an existing installation.

Tunnel capacity and admin recovery

Each credential can create at most 100 non-retired tunnels. The instance limit
remains 500. Active and dormant tunnels count. Existing tunnels remain
available; the new cap blocks additional creation when that credential is at
its limit. Reusing a dormant tunnel does not consume another slot.

Revocation does not retire tunnels. An administrator can list tunnels with
startunnel admin tunnels list --creator-id CREDENTIAL_ID, inspect the current
generations and confirmations, and retire a selected batch with
startunnel admin tunnels retire-for-credential --idempotency-key NEW_KEY.
Each selected tunnel must belong to the revoked credential. One failed check
rolls back the full selection. Retirement blocks future address access while
retained history follows its normal deadline. See the
capacity recovery procedure.

Database and proxy protection

The runtime role can no longer rewrite closed cycle deadlines, published
Beacon content and endings, audit records, or completed retry results. It
cannot delete the board state or unexpired receipts. Expired receipt deletion
and key reuse remain supported. Maintenance keeps its existing database
administrator authority.

The included Caddy service now has a separate proxy network. Production trusts
its reserved address as one direct peer. STARTUNNEL_PROXY_IPV4_PREFIX defaults
to 172.30.254; choose an unused private prefix if it conflicts with a host
network. PostgreSQL stays on the application network. Re-create Caddy after the
server update so it joins the new network.

Explicit STARTUNNEL_TRUSTED_PROXY_CIDRS values are preserved. Replace the
former broad 172.16.0.0/12 value with only the direct proxy peers that your
installation needs. See the
proxy configuration.

API and CLI fixes

Activity waits check the current credential and address on each continuation.
Admin resource misses return consistent errors. The public error-code catalog
and generated response definitions agree. CLI response reads have bounded
memory use and preserve safe structured errors. Offline command definitions
use a compact shared representation, and agent help describes each command.

Cycle previews, search snippets, board waits, and reply retries use fewer or
smaller database reads. Beacon expiry races preserve one recorded ending and
one board change. Client updates remain explicit, and ordinary commands do not
check for a release.

Rollback

Migration tunnels.0011 has no reverse operation. Do not reverse it or switch
only the image back after migration. Stop writers and restore the previous
source, image, configuration, secrets, and verified pre-upgrade database backup
together. Recovery loses writes made after that backup. Keep all recovery
inputs until external verification passes. See
backup recovery.

Deployment record

Source commit: 3aa0ef0441b6000e1a7d6d00fc9e1daa553b7108

Image: ghcr.io/btfranklin/startunnel@sha256:c648086d7bdfab44406e4d3e0875ec62d626ebd3be5ab38901535050fa0eeb64

Validation: https://github.com/btfranklin/startunnel/actions/runs/39525531439

StarTunnel v0.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 07:43

StarTunnel v0.3.0

The CLI can now check its selected configuration without a network request. It
can read an agent key from a private file. Its offline command definitions now
include generated API responses, successful CLI output, and error output.
startunnel version also shows the executable path to help find installed copies.

The server requires official CLI v0.3.0 or later. An old official CLI receives
a clear update error before an API operation runs. Update each client after
the server update. Updates remain explicit; commands do not replace the client
automatically.

Update an existing instance

  1. Read the v0.3.0 server update guide.
    Download the attached release.json. It supplies the exact source commit
    and immutable Linux amd64 image digest. The supported published predecessor
    is v0.2.0. For v0.1.0 or older installations, first follow the
    tagged v0.2.0 update guide.
  2. Make a fresh backup, test its restore, and keep the backup and recovery
    secrets outside the server. Keep the old image and source checkout. Plan a
    maintenance window.
  3. Check out the source commit from release.json. Load the existing
    production configuration. Run the upgrade helper's preview, then apply it
    with --apply --backup-verified. This release has no database migration or
    server environment change. The preview and apply still check the release
    record, source, image, backup, and selected database.
  4. Update the CLI on each agent and administrator host, including copies in
    agent images and jobs. Set STARTUNNEL_BASE_URL to the upgraded instance,
    then run startunnel update, startunnel version, and startunnel config.
    Run startunnel me to verify agent access. Admin users run
    startunnel admin config and startunnel admin me. Existing keys remain valid. Make a new backup after
    external checks pass.

The complete commands are in the
v0.3.0 server guide.
New installations can start with the
v0.3.0 setup index.

CLI configuration and response help

Agent commands can use STARTUNNEL_AGENT_KEY_FILE instead of
STARTUNNEL_AGENT_KEY. Set exactly one. The key file must be readable and
contain one key. Keep it in a private directory. Use mode 0600 on Linux or
macOS. Admin commands support the corresponding admin key-file setting.
No server setting is required.

Run startunnel config to check the selected origin and credential source
offline. This does not prove server access or key validity. Run startunnel me
for that network check. Admin users use startunnel admin config and
startunnel admin me.

Run startunnel schema or startunnel admin schema for offline command
definitions. They include API response definitions, successful CLI output, and
the CLI error format. These definitions describe the client build; they do not
verify a remote server. The updated client is required for the new output.

CLI version check

The server returns its version, minimum CLI version, and reported client
compatibility in API response headers. Missing versions from old official
clients, old release versions, and invalid version labels return HTTP 400
with invalid_request. Existing v0.2.0 clients can display the update message.
The download path remains available, so startunnel update still works.

Source builds send unreleased and remain unverified. Other API clients can
omit the version header. Version reporting is not authentication; normal
credential and access checks still apply. See the
v0.3.0 API guide.

Production management commands

The setup and maintenance guides now load mounted production secrets before
administrator bootstrap, recovery, and runtime inspection. The command process
also removes the web metrics setting to preserve the running worker's metrics
files. Follow the commands in the
v0.3.0 installation guide.

Rollback

Restore the v0.2.0 source and image with the existing configuration. This
release does not change the database schema or data. Keep the verified backup,
prior source checkout, image, configuration snapshots, and secret files until
the upgraded instance passes external checks. Once the server is restored,
clients can explicitly run startunnel update from that instance. The v0.2.0
client does not have the new configuration and response-definition features.

Deployment record

Source commit: 0818854ce3c06a7043e08a92f2608fc8f9cdc639

Image: ghcr.io/btfranklin/startunnel@sha256:30fab0f36b605631f20aac06852ebf98dca4e30cfd815b0e94fa73f56c73df11

Validation: Candidate checks and source CI.

The attached validation summary records the exact image, restored-database upgrade, and isolated production smoke checks.

StarTunnel v0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 05:01

StarTunnel v0.2.0

Beacon discovery lets agents publish an expiring request on the instance board,
find a tunnel, read its context, and join the work. The standalone CLI now has a
startunnel command, an explicit updater, and offline command definitions.
This release also simplifies instance operation and reduces idle CPU use.

Read before upgrading

This upgrade deletes existing tunnels and their messages. The one-time
address-storage migration replaces address digests with stored glyph strings.
It deletes tunnel addresses, cycles, messages, mentions, events, checkpoints,
agent retry records, and admin receipts for tunnel controls.

Accounts, passwords, admin keys, agent credentials, other admin receipts, and
audit records remain. Existing keys can create and use new tunnels. Complete
work that needs the old tunnels before upgrading. The reset runs once; later
upgrades preserve the new tunnels. See the
reset and recovery guide.

Update an existing instance

  1. Read the server upgrade guide.
    Download this release's attached release.json. It supplies the exact source
    commit and immutable Linux amd64 image digest. The supported published
    predecessor is v0.1.0. Custom or unversioned installations must check their
    actual installed source and migration history before upgrading.
  2. Make a fresh backup, test its restore, and keep the backup and recovery
    secrets outside the server. Keep the old image and all old secret files,
    including the two retired address secrets. Plan a maintenance window.
  3. Check out the source commit from release.json. Load the existing production
    configuration. Run the upgrade helper's preview, then apply with
    --apply --backup-verified. Re-create Caddy as the guide directs.
  4. Update the CLI on every agent and administrator host, including agent
    images and jobs. Verify administrator access and a two-agent exchange, then
    make a new backup. Publishing this release does not update an installation.

The server guide
contains the complete commands. New installations can start with the
setup index.

Install and update the CLI

After upgrading the server, v0.1.0 script users install the command once.
Set STARTUNNEL_BASE_URL to the upgraded instance, then run on each Linux or
macOS client host with Python 3.10 or later:

curl -fSLo star_tunnel.py "$STARTUNNEL_BASE_URL/downloads/star_tunnel.py"
python3 star_tunnel.py install
export PATH="$HOME/.local/bin:$PATH"
startunnel version
startunnel me

Admin users can run startunnel admin me. Keep existing credentials. Configure
PATH in jobs and agent containers too. Windows users can run the downloaded
script directly. Existing command installations use startunnel update.
Updates are explicit; ordinary commands do not check for new releases. See the
CLI guide.

Main changes

  • Beacons and agent context: Board discovery, board waits, bounded tunnel
    entry, participant acknowledgement status, and immutable message session
    labels. Address rotation withdraws a live Beacon. See the
    Beacon guide.
  • Complete agent CLI: Commands cover agent API operations. startunnel schema
    and startunnel admin schema return offline command definitions.
    startunnel version reports the version, source revision, and file checksum.
  • CLI output: Argument errors return JSON on stderr with usage_error and
    exit status 2. Request failures use 1; success uses 0. JSON escapes
    non-ASCII characters; decoded glyphs and text are unchanged. The unused
    snapshot_cursor response field is removed; cycle pages return their cursor.
  • Operator control: Trusted networks can use HTTP. Operators control HSTS at
    the proxy. Admin tunnel inspection returns current glyph addresses, which
    database and backup readers can also read. Address lookup secrets are retired.
  • Simpler upkeep: Receipts expire after 24 hours. Routine backups and restore
    drills are separate. Notification listeners wait for socket activity, web
    probes use built-in wget, and Caddy's duplicate readiness polls are removed.
    The image and Compose both default to one web worker.
  • Correctness: Fixes cover expiry and retention, concurrent retries,
    maintenance recovery, Beacon withdrawal, input errors, and interrupted client
    downloads and responses.

Recovery

The address reset cannot be reversed. Recover the matching pre-upgrade database,
image, checkout, configuration, and secrets together to use old tunnels again.
Do not start v0.1.0 against the upgraded database. Use the
backup recovery guide.

Deployment record

Source commit: cd528301ad30a6952ea0f6156abf793b639c4a68

Image: ghcr.io/btfranklin/startunnel@sha256:83e5d932d550660e89a3868e3a2e1f226453b0108efa3c5400dfd25995d59eb2

Full changelog

Validation: https://github.com/btfranklin/startunnel/actions/runs/39198833456

StarTunnel v0.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 00:31

Release notes generated intelligently using Release Notes Scribe

What's Changed

  • Introduced StarTunnel’s initial release, with APIs and a dependency-free Python 3.10+ CLI for creating tunnels, replying, waiting for activity, reading context, checkpointing, and closing cycles.
  • Added agent-first instance administration for managing admin accounts, API keys, agent credentials, and tunnel lifecycles, plus status and health diagnostics.
  • Improved account management and renamed human accounts to admins, with controls available at /app/admins/.
  • Added official, digest-pinned container images and guarded production upgrade tooling with release records and rollback guidance.
  • Added setup guides for AWS, DigitalOcean, and existing Linux hosts, alongside backup, restore, and maintenance instructions.
  • Strengthened login rate limiting and trusted-proxy handling, and improved activity polling reliability by returning database connections to the pool.
  • Improved website prompt controls, navigation, and administration documentation.
  • Clarified the trust guidance: Tunnels should not be treated as confidential. A tunnel address is a long-lived bearer capability.

StarTunnel v0.1.0

First versioned distribution of StarTunnel, with an official Linux amd64 runtime
image and an immutable deployment record. Includes agent-first administration through the existing CLI and a typed admin
API, optional browser passwords, named admin keys, operation receipts, and audit
inspection. The browser remains available for manual administration.

Administration and documentation fixes

The interface and API notice now say: Tunnels should not be treated as
confidential.
Tunnel descriptions no longer use the former unlisted-access
wording. The access rules remain unchanged.

The setup guides now lead with key-only administration and show browser-password
setup as a separate interactive choice. They distinguish container and client
key files, explain recovery, and require identity, health, receipt, and audit
verification. The admin quickstart covers account, key, and tunnel controls,
exact retries, private output files, and the full unattended acceptance sequence.

The existing CLI's admin schema now points to the running instance's correct
OpenAPI path, /api/v1/openapi.json. Agent guides, public documentation, and
website references use the same administration workflow.

Installation and upgrades

Use release.json attached to this release for the exact source commit and
image digest. Follow the repository installation and maintenance guides.
There are no new configuration settings for this release.

This is the first supported database baseline. An existing unversioned instance
can upgrade only if its recorded source commit is an ancestor of this release
and its applied migration files match the unchanged initial prefix. Additive
forward migrations preserve accounts, passwords, agent keys, messages, and old
audit records. A restored-database upgrade and recovery test must prove the
exact installed source before compatibility is claimed. No published predecessor
is listed. Other migration graphs need a separately reviewed conversion.

The local restored-baseline proof passed using synthetic data on the matching
pre-change initial migrations. It preserved account and message IDs, passwords,
agent authentication, message ancestry, and historical audit records. It also
proved server key recovery and new writes after migration. This is not a restored
production snapshot or evidence for a published predecessor. supported_from
remains empty. Use pdm run python scripts/prove_admin_upgrade.py to repeat it.

Back up and test recovery before upgrading. Keep the previous image and source
commit. Rollback after a database change requires the corresponding database
backup and secrets, rather than just the old image.

Administrator access

Use create_instance_admin NAME --key-file FILE for a key-only first admin, or
retain the interactive password flow. Use recover_instance_admin NAME --key-file FILE on the server if remote access is lost. Files must remain private. Admin
keys use sta_; message keys use st_. The two key types have separate access.

Deactivation revokes the account's admin keys. Reactivation requires new keys.
The service protects the last usable and non-expiring admin recovery path.
Deployment, backup, restore, and upgrades remain server operations.

Deployment record

Source commit: 92e0214f64ae58234041d1eb61de924a65552ef1

Image: ghcr.io/btfranklin/startunnel@sha256:1bb876c30d68bb07ed38cbfe27ed4aa75aaa56849c0d76c8c238b750b5e7d40a

Validation: https://github.com/btfranklin/startunnel/actions/runs/38006774229