Python SDK and CLI for building skills on the Synax agentic platform.
Project description
synax-sdk
The Python SDK and synax CLI for building skills on the Synax
agentic platform. Skill developers use this SDK to define skills in Python,
generate the manifest automatically, sign artifacts with Ed25519, and publish
them to a Synax platform instance.
Install
pip install synax-sdk
That gives you both the synax_sdk Python library and the synax CLI.
Quick start
synax keys generate # one-time, creates ~/.synax/keys/<fp>.key
synax skill init my-first-skill # scaffold a new project
cd my-first-skill
uv sync # install deps (synax-sdk pinned)
uv run synax skill test # run the bundled declarative test case
uv run synax skill build # produce a signed artifact in build/signed_bundle/
To publish:
export SYNAX_PUBLISH_TOKEN=spt_...
uv run synax skill publish --target https://synax.your-company.com
What a skill looks like
from synax_sdk import Skill, secrets, logger
skill = Skill(
name="github-pr-summary",
version="1.0.0",
description="Fetch and summarize GitHub pull requests",
capabilities=["network:api.github.com", "secrets:GITHUB_TOKEN"],
secrets=[{"name": "GITHUB_TOKEN", "type": "oauth_token", "description": "..."}],
)
@skill.tool(description="Fetch a PR and return a structured summary")
async def summarize_pr(repo: str, pr_number: int) -> dict:
"""Summarize a pull request.
Args:
repo: Repository in format owner/name.
pr_number: Pull request number.
"""
token = await secrets.get("GITHUB_TOKEN")
logger.info("Summarizing PR", extra={"repo": repo, "pr_number": pr_number})
# ... call the GitHub API, summarize, return ...
return {"title": "...", "summary": "...", "files_changed": 7}
The SDK derives a full manifest from this code at build time. Type hints become
JSON Schema parameter definitions. The Google-style docstring's Args:
section becomes per-parameter descriptions. Capabilities and secrets get
validated against the skill's declarations.
Testing locally
Two complementary patterns ship out of the box.
Declarative — drop a YAML case under test_inputs/<tool>/:
# test_inputs/summarize_pr/case_basic.yaml
input:
repo: "owner/name"
pr_number: 42
secrets:
GITHUB_TOKEN: "test-token"
expected_output_schema:
type: object
properties:
title: {type: string}
expected_secret_accesses: ["GITHUB_TOKEN"]
Run with synax skill test. See docs/testing_skills.md
for the full schema.
Pytest-based — the SDK auto-registers two fixtures:
async def test_summarize_pr(synax_mock_platform, synax_skill_under_test):
synax_mock_platform.secrets.set("GITHUB_TOKEN", "test-token")
tool = next(t for t in synax_skill_under_test.tools if t.name == "summarize_pr")
from synax_sdk.testing import run_tool_async
result = await run_tool_async(tool, repo="owner/name", pr_number=42)
assert "title" in result
CLI commands
synax keys
generate / list / export / import / set-default / register
synax skill
init <name> scaffold a new project
validate check the manifest against the v1.0 schema
test run declarative test cases under test_inputs/
info show the loaded skill's metadata
build sign + package into build/signed_bundle/
verify <yaml> verify the signatures on a manifest
publish upload a signed bundle to a Synax platform
Run any command with --help for full options.
Status
This is the initial 0.1.0 release. The public API may change between
minor versions until 1.0 — see CHANGELOG.md for what's
new and breaking.
Documentation
docs/README.md— project overview and reading orderdocs/parent_platform_context.md— what Synax isdocs/manifest_spec.md— the v1.0 manifest formatdocs/testing_skills.md— testing patternsdocs/technical_plan.md— internal designCHANGELOG.md— release notes
Development
uv sync # install deps + create .venv
uv run pytest # run tests
uv run ruff check . # lint
uv run black --check . && uv run isort --check . # format check
uv run mypy synax_sdk synax_skill_cli # type check
License
Apache License 2.0 — see LICENSE.
Project details
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 synax_sdk-0.2.2.tar.gz.
File metadata
- Download URL: synax_sdk-0.2.2.tar.gz
- Upload date:
- Size: 214.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bef71850e5f93543fc5c394c943a095007a87669bf8b3bc821230cf9da8d74e
|
|
| MD5 |
988c7ea02203d8a759331b295788b94e
|
|
| BLAKE2b-256 |
587cbdd48f85d73926e1d1f2d42a1d43c3530e2d6c9563c48a4700b305107f57
|
Provenance
The following attestation bundles were made for synax_sdk-0.2.2.tar.gz:
Publisher:
publish.yml on synergentic/synax-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synax_sdk-0.2.2.tar.gz -
Subject digest:
0bef71850e5f93543fc5c394c943a095007a87669bf8b3bc821230cf9da8d74e - Sigstore transparency entry: 1588417201
- Sigstore integration time:
-
Permalink:
synergentic/synax-sdk-python@1872d957423729bee1f038177c7913694e95242b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/synergentic
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1872d957423729bee1f038177c7913694e95242b -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file synax_sdk-0.2.2-py3-none-any.whl.
File metadata
- Download URL: synax_sdk-0.2.2-py3-none-any.whl
- Upload date:
- Size: 87.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4fa7de4eef4a636d90c9fff43115a00df83770f430a1b839c542bc7e790b87f
|
|
| MD5 |
d41f07bc36790158caf43d704c929d17
|
|
| BLAKE2b-256 |
dedceada38fceaf037201c9603cf61fe1eaaa8ab86165fba714e8282f2c2b66d
|
Provenance
The following attestation bundles were made for synax_sdk-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on synergentic/synax-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synax_sdk-0.2.2-py3-none-any.whl -
Subject digest:
d4fa7de4eef4a636d90c9fff43115a00df83770f430a1b839c542bc7e790b87f - Sigstore transparency entry: 1588417240
- Sigstore integration time:
-
Permalink:
synergentic/synax-sdk-python@1872d957423729bee1f038177c7913694e95242b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/synergentic
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1872d957423729bee1f038177c7913694e95242b -
Trigger Event:
workflow_dispatch
-
Statement type: