Applications, as Terraform state.

The someonescomputer provider manages this platform's declarative nouns — applications, their configuration variables, managed services and the bindings between them — over the same stateless bearer /cli contract the sc CLI and sc-tray drive. One wire contract, no forks between consumers.

What it manages

Resource Lifecycle Notes
someonescomputer_application create · read · replace · destroy The platform has no update verb, so slug/name/organization/isolation_level force replacement. force_destroy proceeds while a database is still bound.
someonescomputer_variable create · read · update · destroy One name × scope. value is write-only — the platform never returns it, so drift on the value cannot be detected. sensitive/scope force replacement.
someonescomputer_service create · read · destroy A managed database or bucket. engine defaults to the catalogue default; a deprecated engine is created and surfaced as a warning. force_destroy retires it while bound.
someonescomputer_service_binding create · read · destroy Grants an application the use of a service. Both ends force replacement.
Data source Answers
someonescomputer_application One application by slug, with its deployments
someonescomputer_organizations The caller's organizations and roles
someonescomputer_service_engines The managed-service engine catalogue
someonescomputer_me Who the token belongs to

Deployments are deliberately not a resource: a deployment is an immutable revision produced by pushing code (sc deploy), not declarative state. Reference them read-only through the someonescomputer_application data source.

Configuring the provider

Credentials resolve explicit attribute → environment → the credential file sc login writes, so a machine that has already run sc login needs no token in the configuration.

terraform { required_providers { someonescomputer = { source = "grey.ooo/grey/someonescomputer" } } } provider "someonescomputer" { # endpoint = "https://someones.computer" # or $SC_ENDPOINT (default: hosted) # token = "…" # or $SC_TOKEN, or `sc login`'s store # organization = "acme" # default org for resources that omit one }

Never commit a token; prefer SC_TOKEN or the sc store. Mint one at /settings/api-tokens once you have an account.

Build and install it

The provider is not yet in a public registry, so point Terraform or OpenTofu at a locally built binary with a dev_overrides block in ~/.terraformrc:

provider_installation { dev_overrides { "grey.ooo/grey/someonescomputer" = "/path/to/gobin" # dir holding terraform-provider-someonescomputer } direct {} }
go build -o "$(go env GOBIN)/terraform-provider-someonescomputer" .

With a dev_overrides in effect, skip terraform init — plan and apply pick the override up directly. The token comes from sc login, so install the CLI and sign in once first.

The same platform, declared rather than driven

The provider is a fourth client on one contract — the same bearer token, the same tenant rules and the same operations as the CLI, the tray and the control panel. Nothing it does is a thing only it can do; it just lets you say what should exist instead of running the steps to get there.