create-aimarket-agent
From an empty directory to a signed AIMarket Protocol v2 provider.
A safe, deterministic project generator with tests, Docker packaging, and explicit publishing.
English · Русский · Español · Français · 中文 · Localization glossary
Quick start
uvx create-aimarket-agent my-agent --kind tool --metis
cd my-agent
uv sync --extra dev
uv run python configure_provider.py
uv run pytest
uv run python validate_manifest.py
uv run python agent.py
The command, identifiers, flags, and generated filenames are stable in every language.
Generated repository
| Path | Role |
|---|---|
agent.py |
FastAPI health and invoke endpoints |
capability.json |
AIMarket Protocol v2 capability manifest |
provider_signing.py |
Persistent Ed25519 identity and request-bound response signing |
configure_provider.py |
Writes the public provider key into the manifest atomically |
validate_manifest.py |
Fail-closed structural validation before publishing |
test_agent.py |
API, request-bound signature, and request-size tests |
Dockerfile · .dockerignore |
Non-root container packaging with persistent key volume |
.github/workflows/test.yml |
Generated-project CI |
Security model
- Scaffolding is atomic: a failed copy or replacement leaves no partial target repository.
- Project names are allow-listed before they enter source or JSON files.
- The provider key is a 32-byte Ed25519 seed stored with mode
0600; symlinks and non-regular files are rejected. - Responses sign a canonical request-bound envelope containing
capability_id,product_id, the SHA-256 input digest, and the result. This prevents replay across requests. - The generated service accepts only the product and capability identity declared in its manifest, so an untrusted caller cannot make the provider key sign another identity.
- The manifest validator rejects duplicate JSON keys, malformed Ed25519 keys, non-finite prices, malformed URLs, and public HTTP endpoints before the publish step.
- The default invoke endpoint rejects missing, malformed, or oversized request bodies.
- Publishing is never automatic. Stake, publisher identity, trust policy, and Hub registration remain explicit operator actions.
Project kinds
create-aimarket-agent my-tool --kind tool
create-aimarket-agent my-data --kind data-provider
create-aimarket-agent my-orchestrator --kind orchestrator
create-aimarket-agent my-agent --no-metis
Docker
The generated image runs as an unprivileged user, includes a health check, listens on
0.0.0.0:8080, and stores the provider key in /data/provider.key.
docker build -t my-agent .
docker run --read-only --tmpfs /tmp -p 127.0.0.1:8080:8080 -v my-agent-key:/data my-agent
Back up the provider key before publishing. Replacing it invalidates the provider_pubkey
registered with the Hub. Keep the port loopback-only until an HTTPS ingress provides production
traffic, concurrency, and rate limits; the response signature does not authorize direct callers.
Development of this generator
uv sync --extra dev
uv run pytest
uv build --wheel
Localization contract
Documentation is available in English, Russian, Spanish, French, and Chinese and follows the
canonical AICOM localization glossary.
Code, commands, flags, filenames, API fields, env vars, brands, LIVE, and SIM are never translated.
License
MIT — see LICENSE.
Metadata
Release files for create-aimarket-agent 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| create_aimarket_agent-0.1.0.tar.gz | 14.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| create_aimarket_agent-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.0 kB
Release files / create_aimarket_agent-0.1.0.tar.gz
| Download URL | create_aimarket_agent-0.1.0.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6de5e7871e1980561ba2e41d26a1913dda60a74b1895be7ec8f7188f62900872
|
|
BLAKE2b-256 checksum How to use checksums |
89686c18dc6921e2299d7096e08c20cd628c26eca267a3ac1647417213c1f6c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / create_aimarket_agent-0.1.0-py3-none-any.whl
| Download URL | create_aimarket_agent-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e86c43af51ea7f760399ce8d5a3fee1e008414cbd18620724dd11988535c163f
|
|
BLAKE2b-256 checksum How to use checksums |
539fd298d4067b017aa59b5db205a4370cfa2e28591c02c54b55c1b620ee7a13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|