You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Devctl defines, validates, and materializes reproducible Go projects from a devctl.yaml manifest. Commands are non-interactive and keep manifest mutation, synchronization, linting, scaffolding, and generation explicit.
Manage Devctl Go projects.
Usage:
$ devctl [COMMAND] [COMMAND FLAGS] [ARGUMENTS...]
init command
Initialize a Devctl project.
Create the canonical Manifest or materialize the Go project foundation declared by an existing Manifest. Initialization steps are explicit and never run one another implicitly.
Usage:
$ devctl [GLOBAL FLAGS] init [ARGUMENTS...]
init manifest subcommand
Create devctl.yaml.
devctl init manifest --lang go --preset <cli|http-service> --name --module
Create a complete v1 Manifest from a supported preset. This command writes only the Manifest; it does not scaffold files, install tools, synchronize Contracts, lint, or generate code.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--lang="…"
set the project language; supported value: go
string
none
--preset="…"
seed the Manifest from cli or http-service
string
none
--name="…"
set the kebab-case project-name
string
none
--module="…"
set the Go module-path
string
none
--force
replace an existing Manifest instead of returning a conflict
bool
false
none
init scaffold subcommand
Create or refresh the Go project foundation.
devctl init scaffold [--file ]
Publish Devctl-managed project files and create missing Scaffold Seeds. Managed Outputs may be replaced; existing user-owned Seeds are never deliberately overwritten or deleted.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
validate command
Validate the selected Project.
devctl validate [--file ]
Check Manifest structure, semantic validity, references, safe paths, and Project Readiness. Validation findings are normal results and exit with status 1 when any issue is present.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
inspect command
Inspect effective Project configuration.
devctl inspect [--file ]
Show the selected Project root, effective paths, Target Catalog, Runtime Config, Resources, and resolved Contract inputs without requiring every external Snapshot to be ready.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
enable command
Enable a project capability.
Add or update one supported Capability in the Manifest. This command changes only devctl.yaml and does not refresh scaffold files or generated code.
Usage:
$ devctl [GLOBAL FLAGS] enable [ARGUMENTS...]
enable http subcommand
Enable http.
devctl enable http [--always] [--force]
Add the http Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
enable grpc subcommand
Enable grpc.
devctl enable grpc [--always] [--force]
Add the grpc Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
enable logging subcommand
Enable logging.
devctl enable logging [--always] [--force]
Add the logging Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
enable health subcommand
Enable health.
devctl enable health [--always] [--force]
Add the health Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
Usage:
$ devctl [GLOBAL FLAGS] enable health [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
enable telemetry subcommand
Enable telemetry.
devctl enable telemetry [--always] [--force]
Add the telemetry Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
enable pprof subcommand
Enable pprof.
devctl enable pprof [--always] [--force]
Add the pprof Capability and its canonical defaults to the Manifest. Run init scaffold and gen explicitly when the resulting Project files need to be refreshed.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--always
omit the Runtime Start Policy so the Capability always starts
bool
false
none
--force
replace an existing Capability declaration
bool
false
none
add command
Add a named Project resource.
Add or update a named Source, client, Kafka endpoint, database Variant, Redis Connection, S3 Connection, or S3 bucket in the Manifest. This command changes only devctl.yaml.
Usage:
$ devctl [GLOBAL FLAGS] add [ARGUMENTS...]
add db subcommand
Add a database variant.
devctl add db --kind <sqlite|postgres|clickhouse>
Add a SQLite, PostgreSQL, or ClickHouse Variant to a named database Connection. A migration target is declared by default; Devctl never writes SQL or applies migrations.
Usage:
$ devctl [GLOBAL FLAGS] add db [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--kind="…"
select sqlite, postgres, or clickhouse
string
none
--default
make this Variant the Connection default
bool
false
none
--force
replace an existing Variant with the same identity
bool
false
none
--no-migrations
do not declare a migration target for this Variant
Declare a named Kafka endpoint and its raw, JSON Schema, or Proto Contract. Schema-backed endpoints use --path for ordinary Sources or --export for Devctl Sources.
Declare a named Kafka endpoint and its raw, JSON Schema, or Proto Contract. Schema-backed endpoints use --path for ordinary Sources or --export for Devctl Sources.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--connection="…"
attach the bucket to the named S3 connection
string
none
--force
replace an existing S3 bucket with the same name
bool
false
none
sync command
Synchronize external Contracts.
devctl sync [--target ] [--dry-run]
Materialize every supported external Contract Snapshot into Project-owned paths. Full synchronization may prune stale Target directories; use --dry-run to preview changes.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--target="…"
select one exact Target id, such as http-client:billing
string
none
--dry-run
preview publication and pruning without network access or writes
bool
false
none
sync http subcommand
Synchronize external Contracts.
devctl sync http [--target ] [--dry-run]
Materialize external http Contract Snapshots. Family synchronization may prune stale Target directories; an explicit --target never prunes sibling Targets.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--target="…"
select one exact Target id, such as http-client:billing
string
none
--dry-run
preview publication and pruning without network access or writes
bool
false
none
sync grpc subcommand
Synchronize external Contracts.
devctl sync grpc [--target ] [--dry-run]
Materialize external grpc Contract Snapshots. Family synchronization may prune stale Target directories; an explicit --target never prunes sibling Targets.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--target="…"
select one exact Target id, such as http-client:billing
string
none
--dry-run
preview publication and pruning without network access or writes
bool
false
none
sync kafka subcommand
Synchronize external Contracts.
devctl sync kafka [--target ] [--dry-run]
Materialize external kafka Contract Snapshots. Family synchronization may prune stale Target directories; an explicit --target never prunes sibling Targets.
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--target="…"
select one exact Target id, such as http-client:billing
string
none
--dry-run
preview publication and pruning without network access or writes
bool
false
none
gen command
Generate Managed Outputs.
devctl gen [--target ] [--dry-run]
Run the Project-owned generators for every supported Target and atomically publish each Target's Managed Output. Generation never synchronizes or lints implicitly.
Usage:
$ devctl [GLOBAL FLAGS] gen [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--dry-run
preview Managed Outputs without running generators or writing files
bool
false
none
--target="…"
select one exact generation Target id
string
none
gen config subcommand
Generate Managed Outputs.
devctl gen config [--dry-run]
Run the Project-owned generators for config Targets and atomically publish their Managed Outputs without synchronizing or linting implicitly.
Usage:
$ devctl [GLOBAL FLAGS] gen config [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--dry-run
preview Managed Outputs without running generators or writing files
bool
false
none
gen http subcommand
Generate Managed Outputs.
devctl gen http [--target ] [--dry-run]
Run the Project-owned generators for http Targets and atomically publish their Managed Outputs without synchronizing or linting implicitly.
Usage:
$ devctl [GLOBAL FLAGS] gen http [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--dry-run
preview Managed Outputs without running generators or writing files
bool
false
none
--target="…"
select one exact generation Target id
string
none
gen grpc subcommand
Generate Managed Outputs.
devctl gen grpc [--target ] [--dry-run]
Run the Project-owned generators for grpc Targets and atomically publish their Managed Outputs without synchronizing or linting implicitly.
Usage:
$ devctl [GLOBAL FLAGS] gen grpc [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--dry-run
preview Managed Outputs without running generators or writing files
bool
false
none
--target="…"
select one exact generation Target id
string
none
gen kafka subcommand
Generate Managed Outputs.
devctl gen kafka [--target ] [--dry-run]
Run the Project-owned generators for kafka Targets and atomically publish their Managed Outputs without synchronizing or linting implicitly.
Usage:
$ devctl [GLOBAL FLAGS] gen kafka [COMMAND FLAGS] [ARGUMENTS...]
The following flags are supported:
Name
Description
Type
Default value
Environment variables
--file="…"
use path as the Manifest instead of discovering devctl.yaml
string
none
--json
emit compact JSONL events instead of text
bool
false
none
--verbose
include debug diagnostics and raw causes on stderr
bool
false
none
--dry-run
preview Managed Outputs without running generators or writing files
bool
false
none
--target="…"
select one exact generation Target id
string
none
lint command
Lint Project Contracts.
devctl lint [--file ]
Lint every supported Contract using committed local inputs. Findings are normal results and exit with status 1 without becoming execution errors.