This repository now uses a single release source of truth:
- Root changelog: ../CHANGELOG.md
- Version docs: releases/README.md
- Workflow: ../.github/workflows/release.yml
Download packaged builds from GitHub Releases.
Current release archives are named secbot-<platform>.zip. Inside the archive, the executable may still use the legacy hackbot binary name because the PyInstaller spec is still hackbot.spec.
Typical extracted binaries:
- Windows:
hackbot.exe - Linux / macOS:
hackbot
Create a .env file next to the executable before first launch. Minimal examples:
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-your-api-key
DEEPSEEK_MODEL=deepseek-reasonerLLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=gemma3:1b
OLLAMA_EMBEDDING_MODEL=nomic-embed-textRun the packaged binary:
- Windows:
hackbot.exe - Linux / macOS:
chmod +x hackbot && ./hackbot
Release metadata is sourced from:
pyproject.tomlfor the package versionCHANGELOG.mdfor human-readable release notes
python-semantic-release is configured in ../pyproject.toml and runs from the main and beta branches. The GitHub Actions workflow:
- Computes whether a release should be created.
- Builds platform packages with
uvand PyInstaller. - Generates
README_RELEASE.mdinside the packaged artifact fromCHANGELOG.md. - Uploads
secbot-<platform>.zipfiles to the GitHub release.
Install dependencies:
uv sync
uv pip install pyinstallerBuild the packaged application:
uv run python -m PyInstaller hackbot.specGenerate versioned release docs from the root changelog:
python -m utils.release_docs version-docs --changelog CHANGELOG.md --output-dir docs/releasesGenerate a packaged release README manually:
python -m utils.release_docs package-readme \
--changelog CHANGELOG.md \
--version v1.8.0 \
--platform windows-amd64 \
--output dist/hackbot/README_RELEASE.md- There is no root
.env.exampleyet, so release docs intentionally embed copyable.envsnippets. pip install .and GitHub Release artifacts do not provide the exact same runtime surface. The packaged release remains the best path for an out-of-the-box terminal experience.- The release archive name is now
secbot-*, while the bundled executable still uses the historicalhackbotname until the PyInstaller spec is renamed.