| name | treeship-perplexity |
| description | Use Treeship (treeship.dev) from Perplexity Computer โ install, configure, sign agent actions, verify receipts, push to the Hub, run approval-gated workflows, and work on the zerkerlabs/treeship source repo via GitHub. Trigger on any mention of Treeship, treeship.dev, signed receipts, agent attestation, verifiable agent actions, cryptographic proof of agent work, DSSE artifacts, Merkle proofs, approval-gated actions, session receipts, or the treeship CLI. Also load when asked to contribute to or inspect the zerkerlabs/treeship GitHub repository. |
| license | Apache-2.0 |
| metadata | {"author":"zerkerlabs","version":"1.0","repo":"https://github.com/zerkerlabs/treeship","docs":"https://docs.treeship.dev","hub":"https://treeship.dev"} |
Treeship โ Perplexity Computer Skill
Treeship turns every AI agent session into a portable, signed receipt. Local-first. Cryptographically verifiable. Works offline. Shareable with anyone.
The receipt is yours, not ours.
When to Use This Skill
Load this skill when the user:
- Wants to install or set up Treeship
- Asks to sign, attest, or create receipts for agent actions
- Wants to verify a Treeship artifact chain
- Asks about the Hub, pushing artifacts, or shareable verify URLs
- Needs approval-gated actions (human-in-the-loop before execution)
- Asks about the Python SDK (
treeship-sdk), TypeScript SDK (@treeship/sdk), or MCP bridge (@treeship/mcp)
- Wants to inspect, browse, or contribute to the
zerkerlabs/treeship GitHub repo
- Asks about Treeship's cryptographic design (DSSE, Ed25519, Merkle trees, SHA-256)
GitHub Access
The zerkerlabs/treeship repo is accessible via the gh CLI with the github credential preset:
gh api repos/zerkerlabs/treeship/contents/
gh api repos/zerkerlabs/treeship/contents/<path> | python3 -c \
"import sys,json,base64; d=json.load(sys.stdin); print(base64.b64decode(d['content']).decode())"
gh issue list --repo zerkerlabs/treeship
gh pr list --repo zerkerlabs/treeship
Always use api_credentials=["github"] in bash tool calls when using gh.
Key files to read for contributor tasks:
AGENTS.md โ source of truth for repo structure, crypto invariants, CLI UX rules
TREESHIP.md โ what the MCP bridge captures, field-by-field inventory
README.md โ full feature set, packages, roadmap
ONBOARDING.md โ onboarding guide
Repo structure (key paths):
| Path | What |
|---|
packages/core/ | Rust core library โ attestation, signing, Merkle, verifier |
packages/cli/ | Rust CLI โ 25+ commands |
packages/hub/ | Go Hub server โ 12 API endpoints |
packages/sdk-ts/ | TypeScript SDK (@treeship/sdk) |
packages/sdk-python/ | Python SDK (treeship-sdk) |
bridges/mcp/ | MCP bridge (@treeship/mcp) |
docs/ | Fumadocs documentation site |
skills/ | Agent skills (including this one) |
integrations/claude-code-plugin/ | Claude Code plugin |
Installation
curl -fsSL treeship.dev/setup | sh
npm install -g treeship
pip install treeship-sdk
npm install @treeship/sdk @treeship/mcp
Platform support: macOS (arm64, x64) and Linux x86_64. Windows: use WSL.
Core CLI Loop
treeship init
treeship session start --name "my task"
treeship wrap -- npm test
treeship verify last
treeship hub push last
treeship session close --headline "done"
treeship session report
Full CLI Reference
treeship session start --name "..."
treeship session status
treeship session close --headline "..."
treeship session report
treeship wrap -- <command>
treeship attest action --actor agent://name --action tool.call
treeship attest approval --approver human://alice --expires 2026-12-31T00:00:00Z
treeship attest handoff --from agent://a --to agent://b
treeship verify <artifact-id>
treeship verify last
treeship package verify <path-to.treeship>
treeship hub attach [--endpoint https://api.treeship.dev]
treeship hub push <artifact-id>
treeship hub pull <artifact-id>
treeship hub status
treeship inspect <artifact-id>
treeship log [--tail N] [--follow]
treeship status
treeship doctor
treeship keys list
treeship key show
treeship trust list
treeship trust add <key_id> <pubkey> --kind <hub_checkpoint|ship|agent_cert>
treeship trust remove <key_id>
treeship checkpoint
treeship merkle proof <artifact-id>
treeship merkle verify <artifact-id>
treeship setup
treeship add --all
treeship add --discover
treeship ui
Python SDK
from treeship_sdk import Treeship
ts = Treeship()
result = ts.attest_action(
actor="agent://my-agent",
action="tool.call",
meta={"tool": "read_file", "path": "src/main.rs"}
)
print(result.artifact_id)
approval = ts.attest_approval(
approver="human://alice",
description="approve deployment",
expires_in=3600
)
result = ts.attest_action(
actor="agent://executor",
action="deploy.production",
approval_nonce=approval.nonce,
meta={"commit": "abc123", "env": "prod"}
)
verified = ts.verify(result.artifact_id)
push = ts.dock_push(result.artifact_id)
print(push.hub_url)
result = ts.wrap("npm test", actor="agent://ci")
report = ts.session_report()
print(report.receipt_url)
TypeScript SDK
import { Ship } from "@treeship/sdk";
const ship = await Ship.init("./.treeship", "agent://my-agent");
const { receipt } = ship.attestAction({
actor: { type: "agent", id: "agent://my-agent" },
actionType: "tool.call",
actionName: "search.web",
inputs: JSON.stringify({ query: "AI safety" }),
outputs: JSON.stringify({ results: ["paper1"] }),
});
ship.attestHandoff({
fromActor: { type: "agent", id: "agent://researcher" },
toActor: { type: "agent", id: "agent://writer" },
taskCommitment: "complete-report",
});
ship.createCheckpoint();
const bundle = ship.createBundle("Workflow");
await ship.save();
MCP Bridge
Adds Treeship attestation to every MCP tool call โ no code changes required.
claude mcp add --transport stdio treeship -- npx -y @treeship/mcp
{
"mcpServers": {
"treeship": { "command": "npx", "args": ["-y", "@treeship/mcp"] }
}
}
The bridge signs an intent attestation before each tool call and a result receipt after. Arguments and outputs are stored as SHA-256 digests only โ never raw content.
MCP tools exposed (v0.10.1+):
treeship_session_status
treeship_session_event
treeship_attest_action
treeship_verify
treeship_session_report
Approval-Gated Workflow (CLI)
approval=$(treeship attest approval \
--approver human://alice \
--description "deploy v2.1" \
--expires 2026-12-31T00:00:00Z \
--format json | jq -r .approval_nonce)
treeship attest action \
--actor agent://deployer \
--action deploy.production \
--approval-nonce "$approval"
treeship verify last
Hub API
Base URL: https://api.treeship.dev/v1/
Auth: DPoP (no API keys or session tokens). Set up via treeship hub attach.
| Endpoint | Description |
|---|
POST /v1/artifacts | Push artifact (auth required) |
GET /v1/artifacts/:id | Fetch artifact (public) |
GET /v1/verify/:id | Verify artifact (public) |
GET /v1/workspace | List your artifacts (auth required) |
POST /v1/merkle/checkpoint | Store Merkle checkpoint |
GET /v1/merkle/proof/:artifact_id | Fetch inclusion proof |
Public verify URL: https://treeship.dev/verify/{artifact_id}
Statement Types
| Type | Purpose |
|---|
treeship/action/v1 | Agent did something |
treeship/approval/v1 | Human approved something |
treeship/handoff/v1 | Work transferred between agents |
treeship/decision/v1 | LLM made a decision |
treeship/receipt/v1 | Session sealed receipt |
treeship/bundle/v1 | Bundled artifact package |
Cryptographic Invariants (read-only reference)
These never change. Do not suggest modifications to them.
- Signature algorithm: Ed25519 (RFC 8032)
- Envelope format: DSSE (Sigstore/in-toto compatible)
- Canonicalization: RFC 8785 JSON Canonicalization Scheme
- Content addressing: SHA-256
- PAE format:
"DSSEv1" SP LEN(payloadType) SP payloadType SP LEN(payload) SP payload
- Artifact ID:
"art_" + hex(sha256(PAE_bytes)[..16])
- Statement structs do NOT contain an
id field โ IDs live on records/sign results only.
- Approval nonce binding:
action.approvalNonce == approval.nonce enforced at verify time.
Environment Variables
| Variable | Purpose |
|---|
TREESHIP_ACTOR | Default actor URI (e.g. agent://my-agent) |
TREESHIP_DISABLE | Set to 1 to disable receipt capture |
TREESHIP_DEBUG | Set to 1 for verbose output |
TREESHIP_APPROVAL_NONCE | Pass approval nonce without flag |
TREESHIP_PARENT | Default parent artifact ID |
Key Local Paths
| Path | Contents |
|---|
~/.treeship/config.json | Global config, keypair references |
~/.treeship/sessions/ | Local session receipts |
.treeship/ | Project-local ship (when treeship init run in project) |
Resources