Write
Describe what you need with typed takoform_* resources.
The resource type does not name a backend vendor.
provider v1.0.1 · Registry verified
Takoform is an open-source specification and a Terraform/OpenTofu provider. You describe what you need — a bucket, a queue, a database — and a conforming host can select and operate a backend for that exact portable contract. Support, replacement, and migration still depend on the host and an explicit operator plan.
portable-standarddata "takoform_interface" projectionterraform {
required_providers {
takoform = {
source = "registry.terraform.io/tako0614/takoform"
version = "= 1.0.1"
}
}
}
# Published on the canonical Registry; keep the exact pin.
provider "takoform" {
endpoint = "https://forms.example.com"
space = "prod"
}
resource "takoform_object_bucket" "assets" {
name = "assets"
storage_class = "standard"
versioning = true
access_protocols = ["s3_api"]
}
Terraform code usually names a vendor. Writing aws_s3_bucket
ties the module and its state to AWS, and moving to another cloud means
rewriting. Takoform resources name only what you need, so the choice of
backend stays on the host side. Portability is a contract boundary, not
proof that every host supports every Form or can migrate an existing resource.
aws_s3_bucket
Works on AWS only. Moving elsewhere means rewriting the module and migrating state by hand.
takoform_object_bucket
Uses one portable Form contract. A host must prove support for the exact Form, and any migration remains explicit operator work.
The provider delivers typed desired state to a host and observes the result. A conforming host implements the Takoform API, validates the exact Form identity, and owns creating, changing, and deleting the backend. The selected-ten admission retains a signed Takosumi host report; every other host must still prove its own exact support.
Describe what you need with typed takoform_* resources.
The resource type does not name a backend vendor.
On apply, the provider sends the configuration to the host over HTTP. Nothing is changed during plan.
The host chooses the backend, holds the credentials, and makes the
changes. The provider synthesizes the portable Kind/name
ID itself and writes drift, portability, and public outputs only
after both host documents satisfy the exact closed Form schemas.
An undeclared key, backend target, or credential rejects the whole
state projection.
All 34 portable Form Packages across compute, data, analytics, networking,
and operations are published and immutable. Exactly 10 are admitted as
portable-standard under
forms/admissions/v1.0.6; the other 24 are published but not
admitted. Each describes what you want, never who runs it.
takoform_edge_workerEdge/event-driven application served from a prebuilt immutable artifacttakoform_container_serviceOCI container service pinned to an immutable image digesttakoform_compute_instanceLong-running machine instance built from digest-bound boot-image bytestakoform_static_siteStatic asset site served from a prebuilt immutable artifacttakoform_workflowDurable workflow definition and instance-state lifecycletakoform_stateful_entityNamespace of addressable persistent entities implemented by digest-bound application bytestakoform_scheduleCron lifecycle that invokes exactly one connected Resourcetakoform_object_bucketObject storage with a portable default storage classtakoform_object_lifecycle_ruleOne expiration or storage-transition action applied to a connected object storetakoform_key_value_storeKey/value state with an optional consistency preferencetakoform_cache_clusterIn-memory cache sized by an open capability tokentakoform_relational_databaseRelational database addressed through an open engine capability tokentakoform_indexed_storeBounded key/value item store with declared queryable attributes and no query languagetakoform_queueAsynchronous delivery with at-least-once semanticstakoform_stream_topicPublished event stream that many independent consumers can readtakoform_search_indexFull-text index over a declared set of document fieldstakoform_vector_indexVector index with dimensions fixed for the index lifecycletakoform_analytics_datasetAppend-oriented dataset queried for analysis rather than transactionstakoform_model_endpointInference endpoint serving digest-bound model bytes for one declared tasktakoform_dns_zoneAuthoritative DNS zone for one domaintakoform_dns_recordDNS record published into one connected zonetakoform_tls_certificateManaged TLS certificate for a fixed set of domains. Key material stays with the hosttakoform_http_routeHostname and path binding that sends HTTP traffic to one connected Resourcetakoform_load_balancerListener that distributes connections across connected backendstakoform_private_networkPrivate address space that other Resources can attach totakoform_container_registryOCI artifact registry namespacetakoform_log_sinkDestination that retains structured application logstakoform_metric_sinkDestination that retains numeric time seriestakoform_email_senderOutbound mail identity for one verified domaintakoform_webhook_endpointInbound HTTP endpoint that forwards received requests to one connected Resourcetakoform_identity_clientOIDC relying-party registration. Issued client material stays with the hosttakoform_feature_flagNamed runtime switch expressed as one complete enabled percentagetakoform_rate_limit_policyRequest budget applied to one connected Resourcetakoform_backup_policyScheduled copy and retention rule for one connected ResourceThis published set is a starting point, not the limit. The specification can define additional service kinds in the same data-only format. A new Form still needs its own specification, tests, publication, host evidence, and admission. If something you need is missing, propose it on GitHub.
The provider deliberately has no settings for backends, credentials, prices, or billing. Those belong to the host.
Portable does not have to mean bare. The application resources take a
configuration map, so a service can actually be configured
from the same code that describes it. The rest of the set carries the
settings that checking these definitions against real cloud provider
contracts showed were missing.
resource "takoform_container_service" "api" {
name = "api"
image = "registry.example.com/api@sha256:845b5424415de5f77dd5753cbb7c1be8bd8e44cc81f20f9705783a02f8848317"
ports = [8080]
replicas = 3
health_check_path = "/healthz"
# Non-secret only. The host injects credentials on its own path.
configuration = {
LOG_LEVEL = "info"
}
}
resource "takoform_relational_database" "primary" {
name = "primary"
engine = "postgres"
engine_version = "17"
size_class = "db.small"
database_name = "app"
high_availability = true
}
configuration
Non-secret values the running service reads. The desired values remain in code and state, but only a host that supports the exact Form and fields can realize them.
DATABASE_PASSWORD
Not portable configuration. Map keys are held to the same data-only field policy as declared fields, so a credential cannot be smuggled in as configuration. Secret material is never portable state: a host injects it through its own credential path.
takoform_edge_worker, takoform_container_service,
takoform_compute_instance, takoform_workflow, and
takoform_stateful_entity take a configuration map. Elsewhere the
added settings are ordinary typed arguments: size class, initial database name,
and a standby for a relational database; replica count and a health check path
for a container service; internal-only listeners and an idle timeout for a load
balancer; retention, message size, delivery delay, and ordering for a queue,
which can now also name a connection for messages it could not deliver.
Resource definitions and their test fixtures are plain JSON. They contain no executable code, and the verifier rejects anything that does.
Published releases are signed and pinned by digest. All 34 current
packages have immutable releases; only the exact 10 bound by the
admission evidence may be called portable-standard.
Backend choice, credentials, and operations belong to the host. The provider only submits what you asked for.
Terraform and OpenTofu are tested separately against an in-process test host. This is portable test coverage, not live-host proof.
Everything the provider and a host agree on is written down as data-only documents. Start with the public provider documentation or browse the specification.
/docs/
Provider configuration, 34 Form resource references, examples, and the read-only data "takoform_interface" projection.
/spec/
The public host, Form, package, interface, trust, conformance, and versioning contracts.
spec/host-api
How the provider talks to a host: discovery, preview, apply, observe, delete.
spec/form-definition
How a service type is defined as data, and how definitions are identified. It also sets what a configuration map key is allowed to be.
spec/form-package
How definitions are packaged, distributed, and verified.
spec/interface-declaration
How a service declares what it exposes at runtime. The host still owns the record and who may use it.
spec/trust
How releases are signed, and what gets rejected.
The published identities and the limits that remain, as of the latest retained evidence.
v1.0.1, installed and read back from the canonical Registry with Terraform and OpenTofudata "takoform_interface" projection; Form definitions declare interfaces, while the host owns their records, bindings, authorization, and lifecycleconfiguration on the application resourcesforms/admissions/v1.0.6, admitting exactly 10 packages as portable-standardforms.takoform.com/v1alpha1; provider SemVer does not make it stableportable-standard
The historical generation published before the rebuild is retired, not
erased. Its releases keep their immutable bytes, signatures, and admission
evidence, and still verify offline. Nothing there is rewritten or re-signed,
and the current ga-core-v2 closure does not inherit those
proofs. In the source descriptor,
publicationStatus: candidate-only is candidate metadata;
signed release and readback evidence establish the live status of
v1.0.1.
# clone and run the complete repository gate
git clone https://github.com/tako0614/terraform-provider-takoform
cd terraform-provider-takoform
bun run check
# run the source conformance verifier directly
go run ./cmd/standard-form-conformance verify
provider v1.0.1 · Registry 検証済み
Takoform は、サービスをベンダー中立に書くためのオープンな仕様と、その Terraform/OpenTofu プロバイダです。コードに書くのはバケット・キュー・データベースといった必要なものだけ。対応ホストは、その正確なポータブル契約に対してバックエンドを選び、運用できます。ただし、対応状況・置換・移行はホストと明示的な運用計画に依存します。
portable-standard として admissiondata "takoform_interface" projection 1 種類terraform {
required_providers {
takoform = {
source = "registry.terraform.io/tako0614/takoform"
version = "= 1.0.1"
}
}
}
# canonical Registry で公開済み。正確な version を pin する。
provider "takoform" {
endpoint = "https://forms.example.com"
space = "prod"
}
resource "takoform_object_bucket" "assets" {
name = "assets"
storage_class = "standard"
versioning = true
access_protocols = ["s3_api"]
}
Terraform のコードには、ふつうベンダー名が入ります。aws_s3_bucket と書いた時点でそのモジュールと state は AWS 専用になり、別のクラウドへ移すには書き直すしかありません。Takoform のリソース型は必要なものをベンダー中立に表します。ただし、ポータビリティは契約の境界であり、すべてのホストがすべての Form を実装する証明でも、既存リソースをそのまま移行できる保証でもありません。
aws_s3_bucket
AWS でしか使えません。移行にはモジュールの書き直しと state の移し替えが必要です。
takoform_object_bucket
1 つのポータブルな Form 契約を使います。ホストはその正確な Form への対応を証明する必要があり、移行は運用者が明示的に行います。
プロバイダは、型付き desired state をホストへ届け、結果を観測します。対応ホストは Takoform API を実装し、正確な Form identity を検証したうえで、バックエンドを作る・変える・消す責任を持ちます。選択された 10 Form の admission には署名付き Takosumi host report が保持されていますが、ほかのホストはそれぞれ正確な対応を証明する必要があります。
型の決まった takoform_* リソースで、必要なものを書きます。リソース型はバックエンドのベンダー名を持ちません。
apply すると、プロバイダは書かれた内容を HTTP でホストに送ります。plan の段階では何も変更しません。
バックエンドの選択、認証情報の管理、実際の変更はホストの仕事です。プロバイダは portable な Kind/name ID を自分で合成し、ホストの observed / output が正確な Form の閉じた schema を満たした場合だけ drift・portability・公開出力を state に書きます。未宣言のキー、バックエンド target、認証情報が一つでも入れば state への反映全体を拒否します。
計算・データ・分析・ネットワーク・運用にまたがる Form Package 34 件はすべて公開済みで immutable です。forms/admissions/v1.0.6 で正確な 10 件を portable-standard として admission し、残り 24 件は公開済みですが admission されていません。どれも「何が欲しいか」だけを書き、「誰が動かすか」は書きません。
takoform_edge_workerエッジ/イベント駆動アプリケーションtakoform_container_serviceコンテナサービスtakoform_compute_instancedigest で固定した起動イメージを使う長時間稼働マシンtakoform_static_site静的サイトtakoform_workflow長時間実行ワークフローtakoform_stateful_entitydigest で固定したアプリケーションが実装する、アドレス可能で永続的な entity namespacetakoform_scheduleスケジュール実行takoform_object_bucketオブジェクトストレージtakoform_object_lifecycle_rule接続先 object store に適用する、期限切れまたは storage transition の単一アクションtakoform_key_value_storeKey/Value ストレージtakoform_cache_clusterインメモリキャッシュtakoform_relational_databaseリレーショナルデータベースtakoform_indexed_storeキー指定データストアtakoform_queueメッセージキューtakoform_stream_topicイベントストリームtakoform_search_index全文検索インデックスtakoform_vector_indexベクトルインデックスtakoform_analytics_dataset分析用データセットtakoform_model_endpointdigest で固定した model bytes を 1 つの task に提供する推論エンドポイントtakoform_dns_zoneDNS ゾーンtakoform_dns_recordDNS レコードtakoform_tls_certificateTLS 証明書takoform_http_routeHTTP ルートtakoform_load_balancerロードバランサーtakoform_private_networkプライベートネットワークtakoform_container_registryコンテナレジストリtakoform_log_sinkログ保存先takoform_metric_sinkメトリクス保存先takoform_email_senderメール送信takoform_webhook_endpointWebhook 受信口takoform_identity_clientOIDC クライアントtakoform_feature_flag完全な enabled percentage 1 つで表す、名前付き runtime switchtakoform_rate_limit_policyレート制限takoform_backup_policyバックアップこの公開済みセットが上限ではありません。仕様は、別のサービス種別も同じデータ形式で定義できます。ただし、新しい Form ごとに仕様・テスト・公開・ホスト証跡・admission が必要です。足りないものがあれば GitHub で提案してください。
このプロバイダには、バックエンドの指定・認証情報・価格・課金の設定はあえてありません。それらはホスト側で管理します。
ベンダー中立でも、何も設定できないわけではありません。アプリケーション系のリソースには configuration マップがあり、サービスの設定を同じコードの中に書けます。それ以外のリソースにも、実際のクラウドの契約と突き合わせて足りないとわかった項目を入れてあります。
resource "takoform_container_service" "api" {
name = "api"
image = "registry.example.com/api@sha256:845b5424415de5f77dd5753cbb7c1be8bd8e44cc81f20f9705783a02f8848317"
ports = [8080]
replicas = 3
health_check_path = "/healthz"
# シークレットでない値だけ。認証情報はホストが自前の経路で注入する。
configuration = {
LOG_LEVEL = "info"
}
}
resource "takoform_relational_database" "primary" {
name = "primary"
engine = "postgres"
engine_version = "17"
size_class = "db.small"
database_name = "app"
high_availability = true
}
configuration
動いているサービスが読む、シークレットでない値です。desired value はコードと state に残りますが、正確な Form とフィールドに対応するホストだけが実現できます。
DATABASE_PASSWORD
これは configuration には書けません。マップのキーにも、通常のフィールドと同じデータのみのポリシーがかかります。認証情報を設定に紛れ込ませることはできません。シークレットは state に載せるものではなく、ホストが自前の経路で注入します。
configuration マップを持つのは takoform_edge_worker / takoform_container_service / takoform_compute_instance / takoform_workflow / takoform_stateful_entity です。ほかに増えたのは普通の型付き引数で、リレーショナルデータベースのサイズクラス・初期データベース名・スタンバイ、コンテナサービスのレプリカ数とヘルスチェックパス、ロードバランサーの内部限定リスナーとアイドルタイムアウト、キューの保持期間・最大メッセージサイズ・配信遅延・順序保証があります。キューは、配信できなかったメッセージの送り先を connections で指せるようにもなりました。
リソースの定義もテストデータも、ただの JSON です。実行コードは含められず、含まれていれば検証で弾かれます。
公開済みリリースには署名が付き、内容は digest で固定されます。現在の Form Package 34 件はすべて immutable に公開済みで、admission 証跡に束ねた正確な 10 件だけを portable-standard と呼びます。
バックエンドの選択も、認証情報も、実際の操作もホストの担当です。プロバイダは頼まれた内容を送るだけです。
Terraform と OpenTofu を同じものとは見なさず、プロセス内のテスト用ホストに対して別々にテストしています。これは portable test の網羅であり、実ホストの証明ではありません。
プロバイダとホストの間の取り決めは、すべてデータだけのドキュメントに書いてあります。まず公開版の プロバイダドキュメントを読むか、仕様を参照できます。
/docs/
プロバイダ設定、34 Form のリソースリファレンス、例、読み取り専用の data "takoform_interface" projection。
/spec/
host、Form、package、interface、trust、conformance、versioning の公開契約。
spec/host-api
ホストの見つけ方と、preview / apply / observe / delete のやりとり。
spec/form-definition
サービスの種類をデータとして定義する方法と、その識別のしかた。設定マップのキーに何を認めないかも、ここで決めています。
spec/form-package
定義をパッケージにして配布・検証する方法。
spec/interface-declaration
サービスが実行時に何を提供するかの宣言。その記録と利用の許可はホストが持ちます。
spec/trust
リリースへの署名と、何を受け入れて何を拒否するか。
できていることと、まだできていないことをそのまま書いています。
v1.0.1data "takoform_interface" projection 1 種類。Form 定義が interface を宣言し、record・binding・認可・lifecycle はホストが所有しますconfigurationforms/admissions/v1.0.6 による、正確な 10 件の portable-standard admissionforms.takoform.com/v1alpha1 のままです。provider SemVer は API を stable にしませんportable-standard として admission されていません作り直す前に公開した過去の世代は、消さずに retire しています。リリースの immutable bytes・署名・admission の証跡はそのまま残り、いまもオフラインで検証できます。書き換えも署名し直しもしませんし、現在の ga-core-v2 closure がその証跡を引き継ぐこともありません。source descriptor の publicationStatus: candidate-only は candidate metadata であり、v1.0.1 の live status は署名付き release と readback evidence が確定します。
# clone してリポジトリ全体の gate を実行する
git clone https://github.com/tako0614/terraform-provider-takoform
cd terraform-provider-takoform
bun run check
# source conformance verifier を直接実行する
go run ./cmd/standard-form-conformance verify