v1.13.0
Added
symbi fmt— canonical formatter for.symbisource files. Reuses the tree-sitter parse tree fromsymbi-dslto emit a stable canonical layout (4-space indent, single blank line between top-level items, trailing commas in metadata blocks, normalised spacing). Modes: rewrite-in-place by default;--checkexits 2 if changes are needed (CI gate);--stdinfor editor integration. Tolerant: returns input unchanged if the source has parse errors.- Tree-sitter grammar v2 — covers the full DSL surface used by every example agent and documented Symbiont features. New constructs: full expression precedence ladder (
||,&&,==/!=/in, comparisons, arithmetic, unary!/not/-, postfix member/call/index); type literals (Foo { k: v }) and bare records with both identifier and string keys; lambdas (x => expr); vault URLs (vault://...); statements (for in,match,try/catch, assignment, compound assignment,if let Pattern(...) = expr); multi-arg generics (Map<K, V>); underscore separators in numbers. - LLM API keys via
SecretStore—CloudInferenceProviderandLlmClientnow resolve provider keys from HashiCorp Vault, OpenBao, or the file-encrypted backend. New env varsOPENROUTER_API_KEY_REF,OPENAI_API_KEY_REF,ANTHROPIC_API_KEY_REF. Fall back to existing*_API_KEYenv vars on store miss/failure. New constructorsfrom_env_or_secrets(store). - ToolClad
agent_summaryarg type — typestate fence preventing orchestrator-injection of adversarial agent output into trusted orchestration arguments. symbi-invis-strip0.2.0 — INJECTION_MARKERS expanded from tier1-v3 bypass forensics. Runtime tracks the new version.
Fixed
- Slack signature timestamp overflow (
crates/channel-adapter/src/adapters/slack/signature.rs):(now - ts).abs()on i64 overflowed for adversarial timestamps neari64::MAX/MIN. Debug builds panicked; release builds wrapped silently and could let stale or future requests slip through the 300-second freshness check. Delta now widened to i128. Surfaced by theslack_signature_verificationfuzz target. Regression testextreme_timestamps_do_not_paniccoversi64::MIN,i64::MAX, and adjacent values. jsonwebtokenv10 crypto backend — pinnedrust_cryptofeature onjsonwebtokenincrates/runtimeandcrates/channel-adapter. The v10 release dropped a default backend; without explicit selection, JWT verifier tests panicked at runtime.- rustfmt drift in toolclad validator + invis-strip tests.
Editor / tooling ecosystem (separate repos, released this cycle)
tree-sitter-symbiontv0.1.0 — standalone grammar repo; published to npm and crates.iovscode-symbiontv0.1.0 — VS Code extension with TextMate grammar (.vsixattached to its release)symbiont-sdk-jsv1.13.0 — CLI now accepts.symbifiles alongside.jsonand the legacy.dsl
Notes
The symbiont-sdk-python SDK is intentionally left at v1.11.0: the runtime HTTP API surface has not changed since v1.11.0 and the Python SDK does not read agent files from disk in a way the canonical-extension change affects.
Pre-release verification: cargo fmt --check clean; cargo clippy --workspace --all-targets -D warnings clean; cargo test --workspace 1540 passed, 0 failed.
Pre-Built Binaries
Note: Pre-built binaries are tested but considered less reliable than installing via
cargo install symbior Docker (ghcr.io/thirdkeyai/symbi). If you encounter issues, please try those methods first.
Quick Install
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/thirdkeyai/symbiont/main/scripts/install.sh | bashHomebrew (macOS):
brew tap thirdkeyai/tap
brew install symbiManual download:
Download the appropriate binary for your platform from the assets below. Verify checksums with checksums.txt.
Verification
Each binary is signed with Sigstore cosign. Verify with:
cosign verify-blob --certificate symbi-*.pem --signature symbi-*.sig symbi-*.tar.gz \
--certificate-identity-regexp="https://github.com/ThirdKeyAI/Symbiont" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com"SHA256 checksums are in checksums.txt (also signed).