{"id":21465973,"url":"https://github.com/celest-dev/pulumi-turso","last_synced_at":"2026-05-12T14:09:19.295Z","repository":{"id":257806615,"uuid":"865683888","full_name":"celest-dev/pulumi-turso","owner":"celest-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-25T09:12:04.000Z","size":455,"stargazers_count":0,"open_issues_count":11,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-28T14:55:00.144Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/celest-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-01T00:18:14.000Z","updated_at":"2025-11-25T09:10:02.000Z","dependencies_parsed_at":"2024-10-02T07:41:48.381Z","dependency_job_id":"a7bbff6b-c818-4492-abd9-0936f3d2ddd7","html_url":"https://github.com/celest-dev/pulumi-turso","commit_stats":null,"previous_names":["celest-dev/pulumi-turso"],"tags_count":16,"template":false,"template_full_name":"pulumi/pulumi-provider-boilerplate","purl":"pkg:github/celest-dev/pulumi-turso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celest-dev%2Fpulumi-turso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celest-dev%2Fpulumi-turso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celest-dev%2Fpulumi-turso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celest-dev%2Fpulumi-turso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/celest-dev","download_url":"https://codeload.github.com/celest-dev/pulumi-turso/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celest-dev%2Fpulumi-turso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32942341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T08:12:43.430Z","updated_at":"2026-05-12T14:09:19.286Z","avatar_url":"https://github.com/celest-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pulumi Turso Provider\n\nA native Pulumi provider for managing [Turso](https://turso.tech/) databases and groups. Turso is a distributed SQLite database platform built on libSQL.\n\n## Features\n\nThis provider allows you to manage the following Turso resources:\n\n- **Group** - Database groups with primary and replica locations\n- **Database** - SQLite databases within groups\n- **GroupToken** - Authentication tokens for database groups\n- **DatabaseToken** - Authentication tokens for individual databases\n\n## Installation\n\n### Go SDK\n\n```bash\ngo get github.com/celest-dev/pulumi-turso/sdk/go/turso\n```\n\n### Node.js SDK\n\n```bash\nnpm install @celest-dev/pulumi-turso\n# or\nyarn add @celest-dev/pulumi-turso\n```\n\n## Configuration\n\nThe provider requires the following configuration:\n\n| Name | Description | Environment Variable |\n|------|-------------|---------------------|\n| `organization` | Your Turso organization name (required) | `TURSO_ORGANIZATION` |\n| `apiToken` | Your Turso API token (optional if using Turso CLI auth) | `TURSO_API_TOKEN` |\n\n### Setting Configuration\n\nYou can configure the provider using environment variables:\n\n```bash\nexport TURSO_ORGANIZATION=\"your-org\"\nexport TURSO_API_TOKEN=\"your-api-token\"\n```\n\nOr via Pulumi configuration:\n\n```bash\npulumi config set turso:organization your-org\npulumi config set turso:apiToken your-api-token --secret\n```\n\n### Authentication\n\nThe provider supports two authentication methods:\n\n1. **API Token**: Set the `TURSO_API_TOKEN` environment variable or configure `apiToken`\n2. **Turso CLI**: If no API token is provided, the provider will use your Turso CLI authentication (run `turso auth login` first)\n\n## Resources\n\n### Group\n\nCreates a database group in a specific location with optional replicas.\n\n#### Properties\n\n| Input | Type | Description |\n|-------|------|-------------|\n| `name` | string | Name of the group |\n| `primaryLocation` | string | Primary location code (e.g., \"ord\", \"fra\", \"syd\") |\n| `replicaLocations` | string[] | Optional list of replica location codes |\n| `extensions` | string | Optional SQLite extensions (\"all\" or \"none\") |\n\n| Output | Type | Description |\n|--------|------|-------------|\n| `uuid` | string | Unique identifier of the group |\n| `locations` | string[] | All locations where the group exists |\n| `primary` | string | Primary location of the group |\n\n### Database\n\nCreates a database within a group.\n\n#### Properties\n\n| Input | Type | Description |\n|-------|------|-------------|\n| `name` | string | Name of the database |\n| `group` | string | Name of the group to create the database in |\n| `sizeLimit` | string | Optional size limit (e.g., \"500mb\") |\n| `blockReads` | bool | Optional flag to block read operations |\n| `blockWrites` | bool | Optional flag to block write operations |\n| `seed` | object | Optional seed configuration for database initialization |\n\n| Output | Type | Description |\n|--------|------|-------------|\n| `dbId` | string | Unique database identifier |\n| `hostname` | string | Database hostname for connections |\n| `instances` | array | List of database instances |\n\n#### Database Seeding\n\nYou can seed a new database from an existing database or a dump file:\n\n```yaml\nseed:\n  type: \"database\"        # or \"dump\"\n  name: \"source-db-name\"  # for type: database\n  url: \"https://...\"      # for type: dump\n  timestamp: \"2024-01-01T00:00:00Z\"  # optional point-in-time recovery\n```\n\n### GroupToken\n\nCreates an authentication token for a database group.\n\n#### Properties\n\n| Input | Type | Description |\n|-------|------|-------------|\n| `group` | string | Name of the group |\n| `expiration` | string | Optional expiration (e.g., \"2w\", \"30d\", \"never\") |\n| `authorization` | string | Authorization level: \"full-access\" or \"read-only\" |\n\n| Output | Type | Description |\n|--------|------|-------------|\n| `token` | string (secret) | The generated JWT token |\n| `expiresAt` | string | Token expiration timestamp |\n\n### DatabaseToken\n\nCreates an authentication token for a specific database.\n\n#### Properties\n\n| Input | Type | Description |\n|-------|------|-------------|\n| `database` | string | Name of the database |\n| `expiration` | string | Optional expiration (e.g., \"2w\", \"30d\", \"never\") |\n| `authorization` | string | Authorization level: \"full-access\" or \"read-only\" |\n\n| Output | Type | Description |\n|--------|------|-------------|\n| `token` | string (secret) | The generated JWT token |\n| `expiresAt` | string | Token expiration timestamp |\n\n## Examples\n\n### Go\n\n```go\npackage main\n\nimport (\n\t\"github.com/celest-dev/pulumi-turso/sdk/go/turso\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a database group\n\t\tgroup, err := turso.NewGroup(ctx, \"my-group\", \u0026turso.GroupArgs{\n\t\t\tName:            pulumi.String(\"my-group\"),\n\t\t\tPrimaryLocation: pulumi.String(\"ord\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Create a database in the group\n\t\tdb, err := turso.NewDatabase(ctx, \"my-db\", \u0026turso.DatabaseArgs{\n\t\t\tName:  pulumi.String(\"my-db\"),\n\t\t\tGroup: group.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Create a read-only token for the database\n\t\ttoken, err := turso.NewDatabaseToken(ctx, \"my-db-token\", \u0026turso.DatabaseTokenArgs{\n\t\t\tDatabase:      db.Name,\n\t\t\tExpiration:    pulumi.String(\"2w\"),\n\t\t\tAuthorization: turso.DatabaseTokenAuthorization_Read_Only,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Export outputs\n\t\tctx.Export(\"hostname\", db.Hostname)\n\t\tctx.Export(\"token\", token.Token)\n\n\t\treturn nil\n\t})\n}\n```\n\n### Node.js / TypeScript\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as turso from \"@celest-dev/pulumi-turso\";\n\n// Create a database group\nconst group = new turso.Group(\"my-group\", {\n    name: \"my-group\",\n    primaryLocation: \"ord\",\n});\n\n// Create a database in the group\nconst db = new turso.Database(\"my-db\", {\n    name: \"my-db\",\n    group: group.name,\n});\n\n// Create a read-only token for the database\nconst token = new turso.DatabaseToken(\"my-db-token\", {\n    database: db.name,\n    expiration: \"2w\",\n    authorization: \"read-only\",\n});\n\n// Export outputs\nexport const hostname = db.hostname;\nexport const dbToken = token.token;\n```\n\n### YAML\n\n```yaml\nname: turso-example\nruntime: yaml\nresources:\n  my-group:\n    type: turso:Group\n    properties:\n      name: my-group\n      primaryLocation: ord\n  my-db:\n    type: turso:Database\n    properties:\n      name: my-db\n      group: ${my-group.name}\n  my-db-token:\n    type: turso:DatabaseToken\n    properties:\n      database: ${my-db.name}\n      expiration: 2w\n      authorization: read-only\noutputs:\n  hostname: ${my-db.hostname}\n  token: ${my-db-token.token}\n```\n\n## Development\n\n### Prerequisites\n\n- [Go 1.24+](https://golang.org/dl/)\n- [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/)\n- [Node.js 20+](https://nodejs.org/) (for Node.js SDK)\n\n### Building\n\n```bash\n# Build the provider and SDKs\nmake build\n\n# Install the provider locally\nmake install\n\n# Run tests\nmake test\n```\n\n### Running Examples\n\n```bash\n# Run the YAML example\ncd examples/yaml\npulumi up\n\n# Run the Go example\ncd examples/go\ngo mod tidy\npulumi up\n```\n\n## License\n\nApache 2.0 - See [LICENSE](./LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelest-dev%2Fpulumi-turso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcelest-dev%2Fpulumi-turso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelest-dev%2Fpulumi-turso/lists"}