Skip to main content

sanka-cli

sanka-cli is Sanka's single Python distribution. It installs one sanka executable and contains:

  • the Apache-2.0 hosted command dispatcher, authentication, output, and optional MCP integration under sanka_cli;
  • the embedded Apache-2.0 Connector SDK under sanka_connector; and
  • the AGPL-3.0-only local migration runtime under sanka.

Python 3.12 or newer is required.

Install

uv tool install sanka-cli
sanka --help

For the stdio MCP server:

uv tool install 'sanka-cli[mcp]'
sanka mcp

Install the bundled sanka-cli skill into an AI coding harness:

sanka skill install claude
sanka skill install codex --scope project
sanka skill install --scope global

The command prompts for project or global scope when --scope is omitted. Without a harness argument, it installs into every detected Claude Code or Codex CLI. Existing matching installs are left unchanged; different content requires --force.

The base tool does not install framework migrations or provider drivers. Components are immutable GitHub release wheels selected through the extension manager:

sanka extension marketplace add https://github.com/sankaHQ/extensions.git --name sanka
sanka extension add sanka/drf-to-fastapi
sanka extension add sanka/markdown
sanka extension add sanka/sqlite

PyPI is not used as an extension fallback.

Local commands

sanka scan .
sanka plan .
sanka apply --plan-hash sha256:<hash-from-plan>
sanka test .
sanka verify .

Data migrations default to sanka.yaml:

source:
  type: markdown
  connection: ./content
target:
  type: sqlite
  connection: content.db

scan, marketplace management, extension installation, local planning, testing, and verification never require a Sanka API token. Hosted resources, workflows, AI, Custom Code, and explicitly cloud-selected migrations retain their existing authentication requirements. Add --json to local lifecycle commands for the stable sanka-cli/v1 response envelope.

Extension trust

The manager verifies a trusted marketplace snapshot, manifest schema, component/runtime compatibility, exact wheel URL and SHA-256 digest, package metadata, entry points, and installed files. Project locks record the exact snapshot and artifact identities in .sanka/extensions.lock.

Migration components use the sanka-extension/v1 subprocess protocol. Connector implementations load only in an isolated child environment and are proxied over sanka-connector/v1; provider code is never imported into the main CLI process. Hosted providers are not local connectors.

Python facade

from sanka import Sanka

Sanka.connect(...) creates a write-free endpoint descriptor. Sanka.migrate(...) creates or resumes a local lifecycle handle. Planning is destination-write-free, and apply requires the exact plan hash returned by plan.

SDK automation

The Python and Node sanka-sdk migration adapters invoke sanka <command> ... --json as a local subprocess. They do not call hosted execution for local commands, require an API token, auto-install this package, or replace its framework detection and safety defaults.

MCP tools

sanka mcp exposes sanka_research_eol, sanka_research_tco, sanka_research_compare, and sanka_assess. Public research and assessment remain credential-free; the MCP server does not execute migrations.

License

The distribution license expression is Apache-2.0 AND AGPL-3.0-only. Both license texts and the historical hosted CLI notice ship in the wheel and source archive. File-level SPDX identifiers are authoritative.

Compact lifecycle output

Use --compact-dsl instead of --json on scan, plan, apply, test, verify, and extension management commands when an agent needs a short result. The flags are mutually exclusive; --json retains its existing contract. Compact output starts with sanka-compact/v1 <command> <outcome> <migration_state> then emits one key=JSON-value per line. Strings use JSON escaping, including newlines and quotes. Failures, warnings, plan hashes, and limitations are retained. Legacy aliases are not repeated. With full artifacts available, generated file contents and route source code are replaced by explicit omission counts and file names. Read the returned artifact for those details; a compact summary is not a replacement for the full report. data.plan_hash becomes the plan_hash line; use that core hash for apply, not a nested extension hash.

Keep the lifecycle: scan → plan → apply → test → verify. An applied scaffold with manual gaps is not complete. Test establishes generated scope; scenario verification checks HTTP and database parity within the supplied fixtures and cases.

Release files for sanka-cli 0.2.4

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

Source distribution (sdist)

Source distribution for sanka-cli 0.2.4
File Size Uploaded
sanka_cli-0.2.4.tar.gz 320.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sanka-cli 0.2.4
File Interpreter ABI Platform
sanka_cli-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 560.5 kB

Release files / sanka_cli-0.2.4.tar.gz

Download URL sanka_cli-0.2.4.tar.gz
Size 320.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d1e3d8f16d63d9ee3d8fbe269389d278710a63489ef2d1a9e06678cbd4d1964e
BLAKE2b-256 checksum
How to use checksums
efc8fc86e5b01e0a3b702e5e49ce2426eabca956f208111aa3cff621165ea087
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 8, 2026.

Transparency log

Release files / sanka_cli-0.2.4-py3-none-any.whl

Download URL sanka_cli-0.2.4-py3-none-any.whl
Size 240.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ed06b6c73b6f4d878a356b1bff09c01199aafc11d04ed929e7c615ba20c824a
BLAKE2b-256 checksum
How to use checksums
fdd8fffd080c2ea3dd8b4a9ef13cd8d21b37a77b95bca40b51a7574c0b9ab0b6
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 8, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

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