Getting started
What TFsmith does
TFsmith turns your identity tenant into Terraform. Connect a tenant with a READ-ONLY admin API token, browse every exportable object in a clean UI, and click any object for a hand-written-quality Terraform resource block with a matching import block - or export a whole-tenant bundle zip that terraform plan can adopt in one pass. Okta, Auth0, and Authentik at launch.
TFsmith is read-only by architecture: it never writes to your tenant, and secrets are never emitted into HCL - they become sensitive Terraform variables.
Deploy (Docker)
TFsmith ships as a single container plus Postgres. A minimal compose:
services:
tfsmith:
image: ghcr.io/keltech-services/tfsmith:latest
ports: ["8080:8080"]
environment:
TFSMITH_DATABASE_URL: postgresql+psycopg://tfsmith:CHANGE_ME@tfsmith-db/tfsmith
# Optional - match your NAS/host user for volume ownership:
# PUID: "1000"
# PGID: "10"
volumes:
- /path/on/host/data:/data
- /path/on/host/secrets:/secrets
depends_on: [tfsmith-db]
tfsmith-db:
image: postgres:16-alpine
environment:
POSTGRES_USER: tfsmith
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: tfsmith
volumes:
- /path/on/host/postgres:/var/lib/postgresql/data
On first boot TFsmith generates /secrets/master.key - the key that encrypts your API tokens and stored exports. Back it up and never regenerate it: the app refuses to boot with a mismatched key, and stored data cannot be decrypted without it.
First run
1. Open the app and create the first administrator account.
2. Enter your license: a TFSM- activation key (purchased at tfsmith.com - arrives by email in about a minute), or an offline license file. There is no free tier; nothing works without a license. The only data ever sent during activation is your license key and a random install id - never your tenants, never your data.
3. Connect your first tenant (see Connecting a tenant). TFsmith pulls it once automatically; after that only the Refresh button contacts your provider.
Where things live
/data holds the encrypted per-tenant exports; /secrets/master.key is the master key; Postgres holds users, tenants (tokens encrypted), settings, and the audit log. Back up all three together.
All docs · These docs also ship inside the app under the Docs button.