Metadata-Version: 2.4
Name: sange
Version: 0.1.0.post1
Summary: Local-first developer-experience layer between humans and their version-control systems.
Project-URL: Homepage, https://opensource.simtabi.com/products/sange
Project-URL: Documentation, https://opensource.simtabi.com/documentation/sange
Project-URL: Repository, https://github.com/simsange/sange
Project-URL: Issues, https://github.com/simsange/sange/issues
Project-URL: Changelog, https://github.com/simsange/sange/blob/main/CHANGELOG.md
Project-URL: Security Policy, https://github.com/simsange/sange/security/policy
Author-email: Simtabi LLC <opensource@simtabi.com>
Maintainer-email: Imani Manyara <imani@simtabi.com>
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: ai,cli,commit-messages,developer-tools,devex,git,mcp,release-engineering,sbom,sigstore,slsa,svn,tui,vcs
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Environment :: Console :: Curses
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: Software Development :: Version Control :: Git
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: keyring>=24.0
Requires-Dist: pydantic-settings>=2.1
Requires-Dist: pydantic>=2.5
Requires-Dist: python-magic>=0.4.27
Requires-Dist: questionary>=2.0
Requires-Dist: rich>=13.7
Requires-Dist: shellingham>=1.5.4
Requires-Dist: structlog>=24.1
Requires-Dist: tomli-w>=1.0
Requires-Dist: typer>=0.12
Requires-Dist: typing-extensions>=4.10
Requires-Dist: wcwidth>=0.2.13
Provides-Extra: ai-all
Requires-Dist: anthropic>=0.30; extra == 'ai-all'
Requires-Dist: boto3>=1.34; extra == 'ai-all'
Requires-Dist: google-genai>=0.3; extra == 'ai-all'
Requires-Dist: ollama>=0.2; extra == 'ai-all'
Requires-Dist: openai>=1.30; extra == 'ai-all'
Provides-Extra: ai-anthropic
Requires-Dist: anthropic>=0.30; extra == 'ai-anthropic'
Provides-Extra: ai-bedrock
Requires-Dist: boto3>=1.34; extra == 'ai-bedrock'
Provides-Extra: ai-google
Requires-Dist: google-genai>=0.3; extra == 'ai-google'
Provides-Extra: ai-ollama
Requires-Dist: ollama>=0.2; extra == 'ai-ollama'
Provides-Extra: ai-openai
Requires-Dist: openai>=1.30; extra == 'ai-openai'
Provides-Extra: dev
Requires-Dist: hatchling>=1.24; extra == 'dev'
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pre-commit>=3.7; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.12; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Provides-Extra: tui
Requires-Dist: textual>=0.50; extra == 'tui'
Description-Content-Type: text/markdown

# Sange

> Local-first developer-experience layer between humans and their
> version-control systems — eliminating boilerplate, enforcing safety,
> embedding AI assistance into every commit, branch, and release, and
> providing a secure dashboard (local or self-hosted) for fine-grained
> review, approval, scheduling, and orchestration.

[![CI](https://github.com/simsange/sange/actions/workflows/ci.yml/badge.svg)](https://github.com/simsange/sange/actions/workflows/ci.yml)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](pyproject.toml)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/simsange/sange/badge)](https://securityscorecards.dev/viewer/?uri=github.com/simsange/sange)

> **Status: v0.1.0 tagged (2026-05-14)**, Phase 1 CLI surface complete on
> `main`. The architecture is locked (`.design/sange-architecture.md`,
> v4.4). `pip install sange` lights up once the PyPI trusted-publisher
> configuration completes — see `docs/release.md::Step 0` and the
> v0.1.0 known-issues in `CHANGELOG.md`. Multi-arch Docker image
> available at `ghcr.io/simsange/sange:v0.1.0`. Track ongoing
> progress at `.design/plans/checklist.md`.

## What Sange is

- A **workflow layer** that wraps your chosen VCS (Git, SVN, Mercurial,
  Perforce) — never a replacement for it.
- A **commit message lifecycle** (`draft → pending_review → approved →
  committed → pushed → archived`) with AI generation, prompt enhancer, and
  ≥50 normalized presets.
- A **release engine** with signed bundles, SBOM, SLSA 3 provenance, and
  6 destinations (GitHub / GitLab / OCI / S3 / generic registry / filesystem).
- A **history-purge subsystem** with 8 pre-flight gates, hash-chained audit
  JSONL, typed-phrase confirmation, and per-VCS executors.
- A **local-first dashboard** (Laravel 13 + Livewire 4 + WebAuthn passkeys)
  approachable to non-developers — accessible at `https://sange.test` by
  default; remote access via Cloudflare Tunnel / Tailscale / WireGuard / VPS.

## What Sange is not

- Not a fork of any VCS.
- Not a competing wire protocol or repository host.
- Not a closed-source SaaS — it's local-first, Apache-2.0, self-hostable.

## Quickstart

> The installer ships at the v0.1 release. Until then, install from source:

```bash
git clone https://github.com/simsange/sange.git
cd sange
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,tui]"

# Verify install:
python -c "import sange; print(sange.__version__)"
```

When the v0.1 release ships:

```bash
# macOS / Linux:
curl -fsSL https://sange.sh/install.sh | sh   # checksum + sigstore verified

# Windows (PowerShell):
iwr -useb https://sange.sh/install.ps1 | iex
```

## Documentation

All documentation lives under `docs/`. The canonical reference is the
architecture deliverable in `.design/sange-architecture.md`; reader-oriented
manuals are split per-tool, per-topic.

**Live now:**

| Topic | Path |
|---|---|
| Installation | [`docs/installation.md`](docs/installation.md) |
| Quickstart | [`docs/quickstart.md`](docs/quickstart.md) |
| Architecture (reader's guide) | [`docs/architecture.md`](docs/architecture.md) |
| Commit lifecycle walkthrough | [`docs/tools/workflow/commit-lifecycle.md`](docs/tools/workflow/commit-lifecycle.md) |
| Git adapter | [`docs/tools/vcs/git.md`](docs/tools/vcs/git.md) |
| SVN adapter (planned for v0.5) | [`docs/tools/vcs/svn.md`](docs/tools/vcs/svn.md) |
| Python projects with Sange | [`docs/tools/lang/python.md`](docs/tools/lang/python.md) |
| Node.js projects with Sange | [`docs/tools/lang/node.md`](docs/tools/lang/node.md) |
| Roadmap (v0.1 → v4.0+) | [`docs/governance/roadmap.md`](docs/governance/roadmap.md) |
| ADR process | [`docs/governance/adr-process.md`](docs/governance/adr-process.md) |
| Privacy & telemetry | [`docs/governance/privacy.md`](docs/governance/privacy.md) |
| Release procedure | [`docs/release.md`](docs/release.md) |
| Changelog | [`CHANGELOG.md`](CHANGELOG.md) |
| ADR index (33 decisions) | [`docs/adr/`](docs/adr/) and [`.design/plans/decisions-log.md`](.design/plans/decisions-log.md) |
| CLI reference | [`docs/reference/cli-reference.md`](docs/reference/cli-reference.md) |
| Git command catalog (Appendix D) | [`docs/reference/appendix-d-git-catalog.md`](docs/reference/appendix-d-git-catalog.md) |
| SVN command catalog (Appendix E) | [`docs/reference/appendix-e-svn-catalog.md`](docs/reference/appendix-e-svn-catalog.md) |
| Cross-VCS concept map (Appendix F) | [`docs/reference/appendix-f-cross-vcs.md`](docs/reference/appendix-f-cross-vcs.md) |
| Commit template library (Appendix G) | [`docs/reference/appendix-g-commit-templates.md`](docs/reference/appendix-g-commit-templates.md) |
| Profile registry | [`docs/reference/profile-registry.md`](docs/reference/profile-registry.md) |
| Config schema | [`docs/reference/config-schema.md`](docs/reference/config-schema.md) |
| Exit codes | [`docs/reference/exit-codes.md`](docs/reference/exit-codes.md) |
| Operations Kit manifest | [`docs/reference/kit-manifest.md`](docs/reference/kit-manifest.md) |
| Threat model (STRIDE) | [`docs/security/stride.md`](docs/security/stride.md) |
| Prompt-injection defense | [`docs/security/prompt-injection.md`](docs/security/prompt-injection.md) |
| SLSA + SBOM | [`docs/security/slsa-and-sbom.md`](docs/security/slsa-and-sbom.md) |
| Architecture deliverable (canonical) | [`.design/sange-architecture.md`](.design/sange-architecture.md) |
| Master checklist | [`.design/plans/checklist.md`](.design/plans/checklist.md) |

**Planned** (each lands as the relevant `T-G-NNN` task in
[`.design/plans/checklist.md`](.design/plans/checklist.md) flips
`completed`):

| Topic | Target | Gates on |
|---|---|---|
| Release bundling | `docs/tools/release/bundle.md` | v0.5+ release engine |
| History purge | `docs/tools/security/purge.md` | v1.0 purge subsystem |
| Remote access | `docs/tools/ui/remote-access.md` | v1.0 Web UI |
| Premade ops kit | `docs/tools/ui/vps-setup.md` | v1.0 kit surface |
| Per-VCS reference (SVN / Hg / P4 / Pijul / Fossil / Plastic / Sapling) | `docs/tools/vcs/<vcs>.md` | per adapter shipping |
| Per-language profiles (beyond Python) | `docs/tools/lang/<lang>.md` | per-language sprint |
| JSON-RPC schema | `docs/reference/json-rpc-schema.md` | T-162 (v1.0) |
| Operations runbook | `docs/operations/` | v0.5+ operator-facing |

## Audience

Sange is designed to be approachable to seven personas — non-developer founders,
CTOs, cyber-security reviewers, junior engineers, senior staff engineers,
DevOps/SRE, and OSS maintainers. A feature usable only by senior engineers, with
no equivalently-safe path for the others, is a design defect. See
[`.design/plans/positioning.md`](.design/plans/positioning.md).

## Etymology

Named after the **sengi** (Swahili for the elephant shrew), stylized as
"Sange" for branding — short, memorable, evocative of the agile, resilient
nature of the animal. See ADR-014 for the framing rationale.

## License

Sange is licensed under the [Apache License 2.0](LICENSE) (ADR-007). The patent
grant matters for the plugin ecosystem and enterprise adoption.

Copyright © 2026 Simtabi LLC.

## Reporting and contact

- **Bugs / feature requests:** <https://github.com/simsange/sange/issues>
- **Security:** `opensource@simtabi.com` — see [`SECURITY.md`](SECURITY.md)
- **General contact (OSS):** `opensource@simtabi.com`
- **Maintainer:** Imani Manyara — `imani@simtabi.com`
- **Product page:** <https://opensource.simtabi.com/products/sange>
