Skip to main content

pubanon

Pubanon publishes selected files from a private Git repository to GitHub under a separate name and email. Each release creates one publication commit without copying your private commit history. Choose the files, review the prepared release, and confirm publication.

Pubanon checks the selected content for configured sensitive terms. It does not rewrite secrets out of files. You control what you publish; the content matching limits explain what the checks can detect.

Installation

You need Python 3.13 or newer, Git 2.41.0 or newer, and the GitHub CLI (gh). Pubanon targets Linux, macOS, and native Windows. See platform requirements for details.

From a checkout of this repository, install the command with uv:

uv tool install .

After updating the checkout, update the installed command:

uv tool install --reinstall .

make install and make reinstall run the same commands.

Your first release

Choose your publication identity

pubanon setup

Setup asks for the name and email to use in published Git history, the terms you want to keep private, and the default publication route for new projects. The built-in route is staged; choose direct if you intend to publish without private staging. Setup verifies your GitHub CLI account and shows your answers before saving. Choose the name and email you want readers to see: existing publication commits keep that identity. Use pubanon setup --edit to change saved answers or pubanon doctor to check readiness.

Select your project and files

Enter a private source repository with no Git remote:

cd /path/to/private-project
pubanon init

Follow the prompts to choose files, a GitHub destination, a publication route, and repository settings. Choose the staged route and private visibility for this walkthrough so you can test before the final upload and check the result on GitHub before making it public. Review your choices and save. Pubanon stores its configuration outside the source repository.

Prepare and review

Commit the changes you want to publish in your source repository, then run:

pubanon prepare
pubanon inspect
pubanon stage push
pubanon stage watch

prepare saves the selected committed files as a local snapshot; uncommitted changes are left out. If the selected pyproject.toml declares a package version, Pubanon uses it for the release tag; otherwise the snapshot is untagged. See version tags to choose an explicit version.

inspect shows the release details and a read-only review copy of the files. To run builds or tests, copy the files somewhere writable first. To change the snapshot, edit and commit in the source, then run pubanon discard and pubanon prepare again.

stage push sends that exact snapshot to a separate private GitHub repository, asking before it creates the repository the first time. Staging never changes your source branches, and the same staging repository is reused for later releases. stage watch waits for its configured checks; if you haven't configured any, skip it and review the staging repository yourself.

Publish and make it public

When you are satisfied, run:

pubanon repo create
pubanon publish
pubanon repo watch
pubanon repo reveal

repo create creates the final repository, still private; skip it if the repository already exists. Before the first upload, keep in mind that GitHub can retain old commits, activity, Actions logs, and artifacts even after history is replaced. Staging lets you test before anything reaches the final repository.

publish asks for confirmation, then sends the snapshot to the final repository. On the staged route, it first checks that the staged snapshot passed its configured checks. repo watch waits for the final repository's own checks; skip it if none are configured. repo reveal checks the published history and settings, links the repository's Activity and Actions pages for you to review, and asks before making the repository public. Pubanon does not scan logs or artifact contents.

For the next release, commit your changes, updating the package version if you have one, and repeat these steps without repo create and repo reveal.

Where to go next

If you want to... Read
Publish another release or choose a workflow Publication guide
Publish without private staging Direct publication
Add or edit a GitHub release page for a published tag Release pages
Change the selected files, CI checks, or other project settings Project configuration
Run CI privately before publishing Private staging
Inspect an earlier release or recover its private source Published history
Fix a candidate that failed in staging Test privately
Correct a published release History replacement
Recover from an interruption, clean up, or make backups Operations guide
Check platform requirements Platforms
See changes by version Changelog

Use pubanon status to see local state or pubanon status --remote to compare it with GitHub. If a push outcome is unknown, follow the reported recovery command: pubanon publish --resolve.

Development

The development guide lists the required tools. With them installed, run:

make setup
make check

Metadata

Release files for pubanon 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pubanon 0.2.0
File Size Uploaded Provenance Actions
pubanon-0.2.0.tar.gz 205.2 kB With provenance Details for pubanon-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pubanon 0.2.0
File Interpreter ABI Platform Actions
pubanon-0.2.0-py3-none-any.whl Python 3 none any Details for pubanon-0.2.0-py3-none-any.whl

Total release size: 439.9 kB

Release files / pubanon-0.2.0.tar.gz

Download URL pubanon-0.2.0.tar.gz
Size 205.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c33b78065c60d30eaa8883f363fec7430f1ef87c9da67f982327276489781d00
BLAKE2b-256 checksum
How to use checksums
99ab7ce34fa4c7ac5a836f5a7c6a0059052472898628e9685a300731ecad2219
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / pubanon-0.2.0-py3-none-any.whl

Download URL pubanon-0.2.0-py3-none-any.whl
Size 234.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
88b1eb576c968b9f2c10e82f523b7a03ff5c80bd1042c1007808a244cc24ae86
BLAKE2b-256 checksum
How to use checksums
2309db6081aa5ccf4147ddf35e4d1ffbcfd08074b9761f3d1781d072815cd1ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Security for pubanon 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pubanon-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page