Validator for dialekt agent manifests (spec v1.0.1)
Project description
dialekt-manifest-validator
Catch broken agent manifests before they reach runtime.
A Python library and CLI that validates dialekt .agent.yaml manifest files against spec v1.0.1. Structural errors, semantic inconsistencies, and hardcoded secrets — all caught before import.
30-second start
pip install dialekt-manifest-validator
dialekt-validate-manifest my-agent.agent.yaml
Valid:
✓ my-agent.agent.yaml: "SQL Analyst" (1.0.0)
Invalid:
✗ my-agent.agent.yaml — 2 errors, 1 warning
✗ [security.openai_key] line 14: OpenAI API key detected
→ Remove this key. Declare it in `secrets_required` and store in OS keychain.
✗ [semantic.variable_undefined] system_prompt references {{company}} but it is not declared in `variables`
→ Add `company` to the `variables` section.
⚠ [semantic.streaming_image] output.streaming should be false for image format
→ Set output.streaming=false for image output.
What it validates
| Layer | Examples |
|---|---|
| Structure | Required fields, correct types, UUID v4, semver, ISO 8601 timestamps |
| Semantic | Undeclared {{variables}}, broken environments, autonomy ordering, cron frequency |
| Security | OpenAI/Anthropic/GitHub/AWS/Telegram/Slack tokens, private keys, JWT, DB connection strings with credentials, high-entropy strings |
| Paths | Output paths targeting /etc, ~/.ssh, Windows system dirs |
| Capabilities | filesystem destination without filesystem_write capability, etc. |
CLI
# Validate one or more files
dialekt-validate-manifest agent.yaml
dialekt-validate-manifest agents/**/*.yaml
# JSON output (for CI pipelines)
dialekt-validate-manifest --format json agent.yaml
# Strict: treat warnings as errors
dialekt-validate-manifest --strict agent.yaml
# Schema only: skip security and semantic checks
dialekt-validate-manifest --schema-only agent.yaml
# Export JSON Schema for IDE autocompletion
dialekt-validate-manifest --emit-schema > schema.json
Exit codes: 0 = valid, 1 = warnings only, 2 = errors
Python API
from dialekt_manifest import validate
result = validate("my-agent.agent.yaml")
result.valid # bool
result.errors # list[Issue]
result.warnings # list[Issue]
result.manifest # parsed AgentManifest | None
from dialekt_manifest import ManifestValidator
v = ManifestValidator(strict=True)
result = v.validate_file("agent.yaml")
result = v.validate_string(yaml_string)
result = v.validate_dict(data_dict)
# JSON Schema for IDE integration
from dialekt_manifest import export_json_schema
import json
schema = export_json_schema()
print(json.dumps(schema, indent=2))
IDE autocompletion (VSCode)
Install the YAML extension, then add to .vscode/settings.json:
{
"yaml.schemas": {
"https://raw.githubusercontent.com/dialektai/dialekt-manifest-validator/main/schemas/agent-manifest-v1.0.1.json": [
"*.agent.yaml",
"*.agent.yml"
]
}
}
CI integration
GitHub Actions:
- name: Validate agent manifests
run: |
pip install dialekt-manifest-validator==0.1.0
dialekt-validate-manifest --strict agents/**/*.yaml
pre-commit:
repos:
- repo: local
hooks:
- id: dialekt-validate
name: Validate agent manifests
language: python
additional_dependencies: [dialekt-manifest-validator==0.1.0]
entry: dialekt-validate-manifest --strict
files: \.agent\.(yaml|yml)$
Spec
Agent manifest spec v1.0.1: AGENT_MANIFEST_SPEC.md
License
GNU Affero General Public License v3.0
For commercial use without AGPL obligations: hello@dias.now
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dialekt_manifest_validator-0.1.0.tar.gz.
File metadata
- Download URL: dialekt_manifest_validator-0.1.0.tar.gz
- Upload date:
- Size: 38.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8715f6b6f9c33d05ed2453c452b1a713c1b9089bebb47155adce58f1a57da9cb
|
|
| MD5 |
e230d4cc1315c7461b278b34fdfc8d4e
|
|
| BLAKE2b-256 |
3a4dc36727d47655cab064f0eddb102928196de4c6c4732ebaa01772c015c3e5
|
File details
Details for the file dialekt_manifest_validator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dialekt_manifest_validator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8fa2967624a5b246ac4850fa0d5a983722679cb26ff73f45d8792d235f5311a
|
|
| MD5 |
2dcb4dd2d4d7ac8d966a888908bb3a3b
|
|
| BLAKE2b-256 |
b98ea478fec85fd6c25620e6af970b92a3072ad40ff5baa79e00bb19ffa0b04f
|