tincan-cli 0.1.0

Capture important decisions, their reasoning, and learnings from agent coding sessions in plain Markdown
tincan-cli-0.1.0 is not a library.

Tincan

Journal meaningful development progress, preserve important decisions and evidence-supported learnings, and pick up where the work left off.

Tincan is a small, dependency-light Rust CLI. It is not an agent runner, transcript database, publishing platform, or semantic search service. Markdown under .tincan/ is the source of truth.

See the user guide for the complete workflow.

Install

Tincan requires Git and Rust 1.85 or newer.

cargo install tincan-cli
tincan --version
tincan skill install

When working from a source checkout, use cargo install --path . instead.

Install the bundled skill into another Agent Skills-compatible harness:

tincan skill install --path C:\path\to\harness\skills

Use --force to replace an older Tincan-owned skill installation.

Quick start

tincan init C:\path\to\project
tincan inspect C:\path\to\project

tincan journal --repo C:\path\to\project `
  --done "Implemented the compact gallery read model" `
  --question "Should adjacent details be preloaded?" `
  --next "Add the stale-response regression test"

tincan resume --repo C:\path\to\project

tincan record learning --repo C:\path\to\project `
  --title "Paging does not fix main-thread saturation" `
  --note "Paging added sequential catch-up requests without reducing the measured rendering bottleneck." `
  --file app/page.tsx `
  --topic gallery-loading `
  --evidence "Release-build trace"

tincan record decision --repo C:\path\to\project `
  --title "Load full media details on demand" `
  --note "Keep the gallery read model compact because rendering, not data loading, was the measured bottleneck." `
  --file app/page.tsx `
  --related learning-123-paging-does-not-fix-main-thread-saturation

tincan search --repo C:\path\to\project "gallery-loading"
tincan show --repo C:\path\to\project learning-123-paging-does-not-fix-main-thread-saturation
tincan check --repo C:\path\to\project --changed

Replace an active decision without erasing its reasoning:

tincan record decision `
  --title "Preload adjacent media details" `
  --note "Preload only adjacent items after navigation measurements justified the bounded cost." `
  --supersedes decision-123-load-full-media-details-on-demand

Repository storage

.tincan/
├── config.toml
├── decisions/
├── learnings/
├── journal/
└── AGENT_GUIDE.md

Initialization adds /.tincan/ to Git's local exclude file and verifies the rule with Git. Tincan refuses to initialize if .tincan/ already contains tracked files. Memory stays inside the checkout and is omitted from normal Git status, add, and push workflows. An explicit force-add can override any Git ignore rule, so do not force-add private Tincan files. Initialization does not modify the repository's tracked AGENTS.md or .gitignore.

Tincan reads record frontmatter for search and changed-file matching, then loads the full Markdown only for show. Explicit skill installation is the only operation that writes outside the repository and its local Git metadata.