diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37dc15c..2321391 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@ All notable changes to CmdForge will be documented in this file.
## [Unreleased]
+## [0.2.0] - 2026-07-21
+
+First public Python package release. This release brings the current CmdForge
+application to PyPI, including provider routing and provenance, MCP client and
+server support, provider-attached skills, delegated tools, contracts and
+preflight analysis, regression evidence, quality scoring, registry integrity,
+project-owned tools, agent discovery commands, and local usage suggestions.
+
### Added
#### System Dependencies
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..af4abc8
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 Rob
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/PYPI_README.md b/PYPI_README.md
new file mode 100644
index 0000000..0c8ba83
--- /dev/null
+++ b/PYPI_README.md
@@ -0,0 +1,133 @@
+# CmdForge
+
+**Turn useful AI workflows into commands you own.**
+
+CmdForge is a personal tool-building environment for the command line. A tool
+can combine prompts, Python, other CmdForge tools, and Model Context Protocol
+(MCP) calls, then behave like an ordinary Unix command:
+
+```bash
+cat meeting.txt | meeting-decisions
+git diff --staged | review-change
+cmdforge run classify-private --no-fallback --require-local
+```
+
+Tools are readable YAML, stored either in `~/.cmdforge/` for personal use or
+`./.cmdforge/` when they belong to a project. You choose the provider at build
+time or runtime: a local Ollama model, an installed coding CLI, or an
+OpenAI-compatible API.
+
+## Install
+
+CmdForge requires Python 3.10 or newer. `pipx` is recommended for a personal
+command-line application:
+
+```bash
+pipx install "cmdforge[mcp,pty]"
+```
+
+Or install it in a virtual environment:
+
+```bash
+python -m pip install "cmdforge[mcp,pty]"
+```
+
+The base `cmdforge` package includes the CLI and desktop tool builder. The
+`mcp` extra adds MCP client/server support, while `pty` adds interactive CLI
+providers.
+
+Verify the installation and discover providers already present on the machine:
+
+```bash
+cmdforge --version
+cmdforge providers discover
+cmdforge providers discover --add
+```
+
+## Begin with One Useful Command
+
+```bash
+cmdforge create explain --prompt "Explain this clearly for a beginner: {input}"
+echo "def area(r): return 3.14159 * r * r" | cmdforge run explain
+```
+
+Use the deterministic mock provider while developing:
+
+```bash
+echo "sample input" | cmdforge run explain --provider mock
+cmdforge inspect explain
+```
+
+For AI-assisted creation, install CmdForge's official `forge-tool`:
+
+```bash
+cmdforge registry install official/forge-tool
+
+echo "Create a tool that extracts decisions and owners from meeting notes" \
+ | forge-tool --name meeting-decisions --project
+```
+
+## Four Kinds of Step
+
+- **Prompt steps** call a selected AI provider.
+- **Code steps** perform deterministic Python transformations.
+- **Tool steps** compose existing CmdForge tools and delegated contexts.
+- **MCP steps** call tools exposed by external MCP servers.
+
+Contracts, deterministic preflight, regression baselines, schema compatibility,
+and evidence-based quality scores help distinguish “worked once” from a tool
+you can maintain.
+
+## Use CmdForge from Coding Agents
+
+CmdForge can act as an MCP server for Codex and Claude Code. It is closed by
+default: configuring a host does not expose any tools until you add an explicit
+allowlist to `~/.cmdforge/mcp.yaml`.
+
+```bash
+cmdforge mcp configure codex --dry-run
+cmdforge mcp configure codex
+
+cmdforge mcp configure claude-code --scope project --dry-run
+```
+
+Agents can also discover the local and remote catalogs without reading prompt
+or code bodies:
+
+```bash
+cmdforge list --json --filter "commit message" --limit 10
+cmdforge registry search "release notes" --json --limit 5
+git diff | cmdforge run-once "Summarize this change: {input}"
+```
+
+## Privacy and Provenance
+
+Fallback is a data-movement decision. Sensitive callers can require a local
+provider, particular capabilities, and verified runtime identity:
+
+```bash
+cmdforge run incident-summary \
+ --provider local-reasoner \
+ --no-fallback \
+ --require-local \
+ --require-capability structured-json \
+ --data-classification private \
+ --require-model-identity \
+ --result-envelope json
+```
+
+The result envelope reports the requested provider, actual provider, attempted
+fallback chain, model, digest, and locality. Those fields are produced by
+CmdForge rather than invented by the model.
+
+## Learn More
+
+- [Documentation](https://cmdforge.brrd.tech/docs)
+- [MCP and coding agents](https://cmdforge.brrd.tech/docs/mcp-overview)
+- [Providers and privacy policy](https://cmdforge.brrd.tech/docs/providers)
+- [Contracts and quality evidence](https://cmdforge.brrd.tech/docs/contracts-quality)
+- [Registry](https://cmdforge.brrd.tech/tools)
+- [Source and issues](https://gitea.brrd.tech/rob/CmdForge)
+
+CmdForge is beta software, distributed under the MIT License. Review generated
+tools and third-party registry tools as you would any other executable code.
diff --git a/README.md b/README.md
index 01fb0d3..1d41393 100644
--- a/README.md
+++ b/README.md
@@ -55,16 +55,14 @@ That's it - you just used AI to explain itself. The `eli5` tool uses a free mode
For regular use, install natively:
```bash
-# Clone and install
-git clone https://gitea.brrd.tech/rob/CmdForge.git
-cd CmdForge
-pip install -e .
+# Install the application with MCP and interactive-provider support
+pipx install "cmdforge[mcp,pty]"
# Ensure ~/.local/bin is in PATH
export PATH="$HOME/.local/bin:$PATH"
-# Install an AI provider (interactive guide)
-cmdforge providers install
+# Discover AI CLIs, API keys, and Ollama models already on this machine
+cmdforge providers discover --add
# Launch the GUI
cmdforge
@@ -75,12 +73,24 @@ cmdforge create summarize
## Installation
-### Native Install
+### From PyPI
+
+```bash
+pipx install "cmdforge[mcp,pty]"
+```
+
+Or install into an active virtual environment:
+
+```bash
+python -m pip install "cmdforge[mcp,pty]"
+```
+
+### From Source
```bash
git clone https://gitea.brrd.tech/rob/CmdForge.git
cd CmdForge
-pip install -e .
+python -m pip install -e ".[mcp,pty]"
```
### With Development Dependencies
@@ -94,7 +104,7 @@ pip install -e ".[dev]"
### Requirements
- Python 3.10+
-- At least one AI CLI tool installed (see [Provider Setup](docs/reference/providers.md))
+- A configured provider for live AI calls; the built-in mock works without one
- PySide6 (included automatically - requires display server on Linux)
### Post-Install
@@ -195,7 +205,7 @@ cmdforge usage enable # Begin recording tool names in shell pipe
cmdforge usage suggestions # Show frequent pipelines
cmdforge usage clear # Delete all local usage history
-# Model Context Protocol (optional: pip install -e ".[mcp]")
+# Model Context Protocol (optional: python -m pip install "cmdforge[mcp]")
cmdforge mcp add local --command npx --arg=-y --arg @scope/server
cmdforge mcp add remote --transport streamable-http --url https://example.com/mcp
cmdforge mcp connect remote
diff --git a/RELEASING.md b/RELEASING.md
new file mode 100644
index 0000000..a38e2bb
--- /dev/null
+++ b/RELEASING.md
@@ -0,0 +1,64 @@
+# Publishing CmdForge to PyPI
+
+PyPI releases are public and immutable. A release version must never be reused
+for different bytes, even if an upload contains a mistake.
+
+## One-time account setup
+
+1. Create or sign in to an account at
pipx keeps CmdForge isolated while placing cmdforge and cf on
your path:
pipx install 'cmdforge[all]'
+pipx install 'cmdforge[mcp,pty]'
cmdforge --version
cmdforge --help
A normal virtual environment works just as well:
python3.10 -m venv .venv
. .venv/bin/activate
-python -m pip install 'cmdforge[all]'
+python -m pip install 'cmdforge[mcp,pty]'
| Install | Adds |
|---|---|
cmdforge | CLI, desktop GUI, contracts, registry client, and local tool runner |
cmdforge[mcp] | MCP client steps and MCP server integration |
cmdforge[pty] | Interactive pseudo-terminal providers |
cmdforge[all] | All optional runtime features, including the web stack |
cmdforge[mcp,pty] | The recommended personal installation with agent integration |
cmdforge[all] | Every optional feature, including the registry web-server stack |