Skip to content

pragmatiks/pragma-providers

Repository files navigation

Pragma-OS

Pragma Providers

Ask DeepWiki Python 3.13+ License: MIT Code style: ruff

Documentation | SDK | CLI

Resource providers for the pragma-os platform.

Quick Start

# secret.yaml
provider: gcp
resource: secret
name: db-password
config:
  secret_id: db-password
  data: "super-secret-value"
pragma resources apply secret.yaml
pragma resources get gcp/secret db-password

Available Providers

GCP Provider

Manage Google Cloud Platform resources.

pip install pragmatiks-gcp-provider
Resource Description
gcp/secret Secret Manager secrets
gcp/gke GKE Autopilot clusters
gcp/cloudsql/database_instance Cloud SQL instances
gcp/cloudsql/database Cloud SQL databases
gcp/cloudsql/user Cloud SQL users

Kubernetes Provider

Manage Kubernetes resources.

pip install pragmatiks-kubernetes-provider
Resource Description
kubernetes/configmap ConfigMaps
kubernetes/secret Secrets
kubernetes/service Services
kubernetes/statefulset StatefulSets

Qdrant Provider

Vector database for similarity search.

pip install pragmatiks-qdrant-provider
Resource Description
qdrant/database Deploy Qdrant to GKE via Helm
qdrant/collection Manage vector collections

Agno Provider

AI agent deployment.

pip install pragmatiks-agno-provider
Resource Description
agno/agent Deploy AI agents to GKE

Using Provider Resources

Reference provider resources in your configurations:

from pragma_sdk import FieldReference

config = AppConfig(
    database_password=FieldReference(
        provider="gcp",
        resource="secret",
        name="db-password",
        field="data"
    )
)

Or via YAML with dependency references:

provider: myapp
resource: service
name: api
config:
  db_password:
    $ref:
      provider: gcp
      resource: secret
      name: db-password
      field: data

Building Custom Providers

Create your own providers with the SDK:

# Initialize a provider project
pragma providers init mycompany

# Implement your resources
cd mycompany-provider
# Edit src/mycompany_provider/resources/

# Deploy to the platform
pragma providers push --deploy

See the Building Providers Guide for complete documentation.

Provider Architecture

Each provider contains:

  • Provider namespace - Groups related resources (e.g., gcp)
  • Resource types - Individual resource definitions with Config and Outputs
  • Lifecycle methods - on_create, on_update, on_delete implementations
from typing import ClassVar
from pragma_sdk import Resource, Config, Outputs

class SecretConfig(Config):
    project_id: str
    secret_id: str
    data: str

class SecretOutputs(Outputs):
    resource_name: str
    version_id: str

class Secret(Resource[SecretConfig, SecretOutputs]):
    provider: ClassVar[str] = "gcp"
    resource: ClassVar[str] = "secret"

    async def on_create(self) -> SecretOutputs:
        # Create secret in GCP Secret Manager
        ...

    async def on_update(self, previous_config: SecretConfig) -> SecretOutputs:
        # Update secret version
        ...

    async def on_delete(self) -> None:
        # Delete secret
        ...

Development

# Install dependencies
task install

# Run all tests
task test

# Run all checks
task check

# Provider-specific tasks
task gcp:test
task gcp:check

Repository Structure

pragma-providers/
├── packages/
│   ├── gcp/              # GCP provider (secret, gke, cloudsql)
│   ├── kubernetes/       # Kubernetes provider
│   ├── qdrant/           # Qdrant provider (database, collection)
│   └── agno/             # Agno provider (agent)
├── pyproject.toml        # Workspace configuration
└── README.md

License

MIT