Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Trustable contracts between agents. A contract is a precise, content-addressed promise; evidence that someone kept it can be checked by anyone. Software capabilities are the first vertical: a contract specifies a capability, and any implementation, hand-written or AI-generated, is checked against it.
This repository covers MVP steps 1 and 2: the contract format with init, validate, and test, and signed attestations with attest and verify, run in a container or process sandbox.
uv tool install symbola # or: pipx install symbola
symbola --help
The package and command are symbola (after symbola.sh). pip install symbolon is an unrelated project.
| You have | Use | Start with |
|---|---|---|
| A product that already works | symbola extract: an agent reads the code and drafts the pack, checked against the original | symbola extract ./my-product --pack you/my-product |
| A product you are building now | The symbola-pack skill: your agent records decisions as you make them | npx skills add kausalflow/symbola --skill symbola-pack |
| An idea, no code yet | The symbola-decide skill: your agent asks you multiple-choice questions and writes the pack | npx skills add kausalflow/symbola --skill symbola-decide |
All three end in the same pack format and the same symbola publish. Before publishing,
build the pack once from the pack alone (symbola replicate spec --builds 1) and publish
with --evidence; a pack without it is listed as having no passing build.
See Pack registry.
Assistants and coding agents can find and build packs through the Symbola connector (https://symbola.sh/mcp) or a skill. Setup for ChatGPT, Claude, Cursor, VS Code, Codex and Gemini CLI is at https://symbola.sh/connect/.
npx skills add kausalflow/symbola --skill symbola-build # the build skill, for most coding agents
Publishers without code yet can write a pack by answering questions: npx skills add kausalflow/symbola --skill symbola-decide.
In Claude Code, the plugin adds the skills and the connector:
/plugin install symbola --marketplace kausalflow/symbola
From a clone of this repository:
pip install -e ".[dev]"
symbola init acme/shout # scaffold a contract that already validates
symbola validate contracts/acme/shout/versions/1 # check it and print its digest
symbola validate contracts/core/date-parse/versions/1
symbola test contracts/core/date-parse/versions/1 examples/impls/date-parse-strptime # fails: too lenient
symbola test contracts/core/date-parse/versions/1 examples/impls/date-parse-strict # passes
symbola keygen # this runner's signing key
symbola attest contracts/core/date-parse/versions/1 examples/impls/date-parse-strict -o att.json
symbola verify att.json --trust ~/.config/symbolon/runner.pub \
--contract contracts/core/date-parse/versions/1 --impl examples/impls/date-parse-strict --rerun
| Command | What it does |
|---|---|
symbola init <namespace/name> | Scaffold a contract that passes validate out of the box |
symbola validate <dir> | Check structure, schema drift, examples, reference, spec vacuity and mutants; print the digest |
symbola schema <dir> | Regenerate schema/*.json from schema.py |
symbola test <dir> <impl.py> | Run the contract's examples and properties against an implementation |
symbola digest <dir> | Print the contract's content digest |
symbola impl-init <dir> --contract <dir> | Write an implementation manifest pinned to the contract's digest |
symbola keygen | Create this runner's Ed25519 signing key |
symbola attest <contract> <impl> | Run the spec in a sandbox; write a signed in-toto attestation |
symbola verify <attestation> | Check signature, trust, digests; --rerun reproduces it locally |
symbola diff <contract> <impl> <impl>... | Run several builds on one input pool; report where they disagree, the ambiguity estimate, and the obligations each split traces to |
symbola extract <source> --pack <ns/product> | Have a coding agent (Claude Code by default) draft a spec pack from an existing product; check it against the original |
symbola replicate <pack> | Hand a pack to outside coding agents (Claude Code by default), then attest, holdout-test and diff the builds they make |
symbola pack validate <dir> | Check a spec pack's brief, assumptions and obligations; report obligations by status |
symbola mutants <dir> | Show which checks kill which mutants, and the contract's kill rate |
symbola canary plant <dir> <out> / canary check | Give a builder a copy with one contradictory example; catch builds fitted to the examples |
symbola flag <ref> <reason> | Report a contradiction in the spec instead of coding around it |
| Contract | Capability |
|---|---|
core/date-parse@1 | Parse a date written in ISO, en-US, en-GB, or de-DE conventions |
core/csv-to-records@1, @2 | Parse RFC 4180 CSV with a header into records (v2 also rejects malformed quoting) |
core/unit-convert@1 | Convert length, mass, and temperature with exact factors |
The contract format is specified in docs/CONTRACT_FORMAT.md, implementations and attestations in docs/ATTESTATION.md, and spec packs in docs/PACK_FORMAT.md.
The docs site is built with Zensical from docs/ and published to GitHub Pages on every push to main. Each pull request gets a preview at pr-preview/pr-<number>/, linked in a comment on the PR.
pip install -e ".[docs]"
zensical serve # http://localhost:8000
pytest
Sandbox tests run for each sandbox available on the machine: container tests need a Docker daemon, process tests need unprivileged user namespaces. Others are skipped.
Bump __version__ in src/symbola/__init__.py, merge, then publish a GitHub release tagged v<version> (for example v0.1.0). The Publish to PyPI workflow builds the package and uploads it to PyPI as symbola through trusted publishing.