Skip to content
PtahDocs
v0.25.0

Graphic preview

100%
Page type: concept

Ptah ecosystem

See which public Ptah repositories a workflow needs, how they work together, and how mature each one is.

To plan and apply a schema change you need one repository: ptah, which holds the engine and the CLIs. The other public repositories install it, run it for you on Kubernetes, add an engine it does not build in, or check it. Use the map to find the ones your work needs, and leave the rest out.

Ptah ecosystem map The Ptah ecosystem grouped by role, with ptah at the center. Core: CLI / automation, ptah. Optional Kubernetes workflow: Kubernetes API, ptah-operator, ptah-console. Optional external providers: ptah-ydb-plugin, ptah-duckdb-plugin, ptah-spanner-plugin. Distribution and CI: homebrew-ptah, ptah-action. Discover and try: ptah.run, ptah-sandbox. Verification and test helpers: ptah-atlas-conformance, ptah-testkit, ptah-action-e2e. The repository table and the relationship list below the map give every component and connection as text. OPTIONAL KUBERNETES WORKFLOW OPTIONAL EXTERNAL PROVIDERS DISTRIBUTION AND CI DISCOVER AND TRY VERIFICATION AND TEST HELPERS CLI / automationYour shell, scripts or CI ptahEngine, CLIs and Go API Kubernetes APIOperator resources ptah-operatorKubernetes reconciler ptah-consoleOperator web consoleOPTIONAL ptah-ydb-pluginYDB providerEXPERIMENTAL ptah-duckdb-pluginDuckDB providerSCAFFOLD ptah-spanner-pluginSpanner providerOPTIONAL homebrew-ptahHomebrew tap ptah-actionGitHub Action ptah.runWebsite and installers ptah-sandboxBrowser playground ptah-atlas-conformanceAtlas compatibility evidence ptah-testkitTest helpers for Go projects ptah-action-e2eAction end-to-end checks Runs directly Manages with kubectl Reads and approvesas you Reconciled by Runs executor Jobs Starts the provider (experimental) No services yet(not implemented) Starts the provider when installed(experimental) Installs releaseand edge builds Serves the installers Runs on pullrequests Links to theplayground Runs it asWebAssembly Measurescompatibility Wraps the GoAPI Tests it end to end

Core

  • CLI / automationYour shell, scripts or CI→ ptah: Runs directly→ Kubernetes API: Manages with kubectl
  • ptahEngine, CLIs and Go API→ ptah-ydb-plugin: Starts the provider (experimental)→ ptah-duckdb-plugin: No services yet (not implemented)→ ptah-spanner-plugin: Starts the provider when installed (experimental)

Optional Kubernetes workflow

  • Kubernetes APIOperator resources→ ptah-operator: Reconciled by
  • ptah-operatorKubernetes reconciler→ ptah: Runs executor Jobs
  • ptah-consoleOptionalOperator web console→ Kubernetes API: Reads and approves as you

Optional external providers

  • ptah-ydb-pluginExperimentalYDB provider
  • ptah-duckdb-pluginScaffoldDuckDB provider
  • ptah-spanner-pluginOptionalSpanner provider

Distribution and CI

  • homebrew-ptahHomebrew tap→ ptah: Installs release and edge builds
  • ptah-actionGitHub Action→ ptah: Runs on pull requests

Discover and try

  • ptah.runWebsite and installers→ ptah: Serves the installers→ ptah-sandbox: Links to the playground
  • ptah-sandboxBrowser playground→ ptah: Runs it as WebAssembly

Verification and test helpers

  • ptah-atlas-conformanceAtlas compatibility evidence→ ptah: Measures compatibility
  • ptah-testkitTest helpers for Go projects→ ptah: Wraps the Go API
  • ptah-action-e2eAction end-to-end checks→ ptah-action: Tests it end to end

Legend

  • Runs or calls
  • Installs
  • Tests or measures
  • Documents or links
  • Hollow arrowhead: experimental
  • Sparse dashes: not implemented
  • Dashed outline: not a repository

The public Ptah repositories, grouped by role, with ptah at the center.

What to notice: the direct path from the CLI to ptah needs nothing else. The Kubernetes workflow and the console are optional. So are the external providers, which only an engine Ptah does not build in needs.

Each path below is complete on its own, and the first one needs no other component. Start with the first unless your databases are managed from Kubernetes.

CLI or CI. Run ptah from a shell, a script or a CI job, or through the GitHub Action. This path needs no operator and no console.

  • CLI / automation → ptah: Runs directly
  • ptah-action → ptah: Runs on pull requests

Read next: Get a first result, Run Ptah in CI, Embed Ptah in Go.

Kubernetes. Install the operator and manage its resources with kubectl and the kubectl ptah plugin. The operator reconciles them and runs Ptah in short-lived executor Jobs.

  • CLI / automation → Kubernetes API: Manages with kubectl
  • Kubernetes API → ptah-operator: Reconciled by
  • ptah-operator → ptah: Runs executor Jobs

Read next: Kubernetes operator, Operator documentation.

Kubernetes with the console. Add the console to the Kubernetes path when people want a browser view to inspect plans and approve them. It works through the same Kubernetes resources and replaces neither the operator nor Ptah.

  • ptah-console → Kubernetes API: Reads and approves as you
  • Kubernetes API → ptah-operator: Reconciled by
  • ptah-operator → ptah: Runs executor Jobs

Read next: ptah-console, Console compatibility.

Providers are a separate choice, and they apply on any path. A provider is needed only for an engine Ptah does not build in. Supported databases lists what Ptah builds in, and executable providers explains how a provider is installed and selected.

Every public repository is listed here, and each row names what its owner says about its maturity. A repository’s existence is not a support claim: a scaffold can be recognized by Ptah and still do nothing.

RepositoryStatusUse it whenRead next
Core
ptah
Engine, CLIs and Go API
ReleasedAlways. Every other component runs, installs, checks or links to it.Releases
Install Ptah
Embed Ptah in Go
Optional Kubernetes workflow
ptah-operator
Kubernetes reconciler
ReleasedYour databases are managed from Kubernetes, and changes should be reconciled from published artifacts with approvals bound to the exact plan.Operator documentation
Ptah compatibility
Kubernetes operator
ptah-console
Operator web console
ReleasedPeople review or approve operator plans and want a browser view instead of kubectl. The operator runs the same without it, and removing it changes nothing the operator does.Compatibility
Optional external providers
ptah-ydb-plugin
YDB provider
ExperimentalYou work with YDB. Install it with ptah providers install ydb; no Ptah installation channel includes it.Configure the YDB provider
Executable providers
ptah-duckdb-plugin
DuckDB provider
ScaffoldNot for DuckDB work yet. Ptah has no built-in DuckDB support either.Configure the DuckDB provider
ptah-spanner-plugin
Spanner provider
ExperimentalYou work with Spanner's PostgreSQL interface. Install it with ptah providers install spanner; no Ptah installation channel includes it, and it installs no PGAdapter.Configure the Spanner provider
Executable providers
Distribution and CI
homebrew-ptah
Homebrew tap
ReleasedYou install command-line tools on macOS or Linux with Homebrew.Install with Homebrew
ptah-action
GitHub Action
ReleasedYou review schema changes in GitHub pull requests.Run Ptah in CI
Discover and try
ptah.run
Website and installers
Published siteYou meet Ptah for the first time, or you want the one-line install command.Website
ptah-sandbox
Browser playground
Published siteYou want to try Ptah's commands before you install anything.Playground
Verification and test helpers
ptah-atlas-conformance
Atlas compatibility evidence
EvidenceYou want to know what Atlas expresses that Ptah does not cover yet, before you rely on ptah-compat.Conformance
ptah-testkit
Test helpers for Go projects
ReleasedYour Go tests apply migrations to a real database.Embed Ptah in Go
ptah-action-e2e
Action end-to-end checks
Test fixtureYou maintain the Action. Workflows that use the Action do not need it.Nothing further

The status column uses these labels:

  • Released. Publishes versioned releases.
  • Experimental. Publishes releases and is still under development.
  • Scaffold. Exists with no working features yet.
  • Published site. A website, deployed from the repository.
  • Evidence. Produces reports; not something you install.
  • Test fixture. Exists to test another repository.

An arrow follows the flow of work, from the component that starts it to the one that carries it on. Not every connection is a runtime dependency: installing, testing and linking are different relationships, and the table names each one.

RelationshipKind
CLI / automation → ptah: Runs directlyRuns or calls
CLI / automation → Kubernetes API: Manages with kubectlRuns or calls
ptah-console → Kubernetes API: Reads and approves as youRuns or calls
Kubernetes API → ptah-operator: Reconciled byRuns or calls
ptah-operator → ptah: Runs executor JobsRuns or calls
ptah → ptah-ydb-plugin: Starts the provider (experimental)Runs or calls
ptah → ptah-duckdb-plugin: No services yet (not implemented)Runs or calls
ptah → ptah-spanner-plugin: Starts the provider when installed (experimental)Runs or calls
homebrew-ptah → ptah: Installs release and edge buildsInstalls
ptah.run → ptah: Serves the installersInstalls
ptah-action → ptah: Runs on pull requestsRuns or calls
ptah.run → ptah-sandbox: Links to the playgroundDocuments or links
ptah-sandbox → ptah: Runs it as WebAssemblyRuns or calls
ptah-atlas-conformance → ptah: Measures compatibilityTests or measures
ptah-testkit → ptah: Wraps the Go APITests or measures
ptah-action-e2e → ptah-action: Tests it end to endTests or measures

Ptah, the operator, the console and the providers have separate releases, and a new version of one does not imply a matching version of another. Each project publishes its own compatibility statement, so this page lists no version numbers: