Skip to content

Releases: speakeasy-api/granary

v1.2.2

16 Feb 16:35

Choose a tag to compare

1.2.2

Prior art no longer includes the current project

granary plan searches for related prior art when creating a new project. Previously, the just-created project would appear in its own prior art results, which was confusing and unhelpful.

The find_prior_art function now accepts an exclude_id parameter and filters out the current project before returning results. This means prior art suggestions only contain genuinely distinct projects.

Includes tests covering both the exclusion logic and the edge case where the only search match is the excluded project itself.

v1.2.1

16 Feb 16:19

Choose a tag to compare

1.2.1

Automated release pipeline

Releases are now fully automated using boop. When a PR with changelog fragments merges to main, CI automatically:

  • Resolves the next semver version from pending fragments
  • Updates Cargo.toml and Cargo.lock
  • Commits, tags, and pushes the release
  • Builds cross-platform binaries (macOS, Linux, Windows)
  • Publishes a GitHub Release with structured release notes

This replaces the previous tag-push workflow, which required manual version bumping and tag creation — a process that was error-prone and led to version drift between Cargo.toml and GitHub releases.

New /shipit developer command

Contributors can now run /shipit in Claude Code to prepare a release PR. It analyzes your branch's changes, determines the appropriate semver bump, records a changelog fragment via boop, and opens a PR — all in one step.

Updated finalize workflow

The finalize skill now delegates to /shipit instead of requiring manual version bumps in Cargo.toml. Version management is fully handled by CI going forward.

v1.2.0

15 Feb 23:13
d620583

Choose a tag to compare

Composable Actions with Registry and Pipelines

This release implements RFC 0001: Composable Actions (Pipelines) — a complete actions system that turns granary into a composable workflow engine. Actions are small, focused TOML definitions that can be used standalone or wired together into multi-step pipelines.

What's new

  • Actions registry with namespaced action definitions (git/worktree-create, agents/claude-work, notify/macos)
  • Pipeline execution — chain multiple actions into multi-step workflows with output passing between steps
  • Template extensions{steps.<name>.stdout}, {steps.<name>.exit_code}, {prev.stdout}, {prev.exit_code} for wiring step outputs
  • granary action CLIshow, run, list, add, remove, install subcommands
  • granary action run — one-shot execution of any action (simple or pipeline) outside the worker/event system, with --dry-run and --set key=value for testing
  • 9 bundled registry actions across git/, agents/, and notify/ namespaces
  • Worker pipeline support — workers automatically detect pipeline actions and execute them with per-step stdout capture, log delimiters, and error handling
  • on_error per stepstop (default) or continue to control pipeline behavior on failures
  • Runner-action inheritanceworker start --runner resolves the runner's backing action, inheriting command/args/env with worker-level overrides

Examples

Pure registry composition — install building blocks, compose locally:

granary action install git/worktree-create
granary action install agents/claude-work
granary action install notify/macos
# ~/.granary/actions/worktree-claude.toml
description = "Isolated worktree workflow with Claude"
on = "task.next"
concurrency = 2

[[steps]]
action = "git/worktree-create"

[[steps]]
action = "agents/claude-work"
cwd = "{steps.git/worktree-create.stdout}"

[[steps]]
action = "notify/macos"
on_error = "continue"

Multi-agent pipeline — plan with one model, implement with another:

[[steps]]
name = "plan"
command = "claude"
args = ["-p", "$(granary work start {id})\n\nCreate a detailed plan.", "--model", "opus"]

[[steps]]
name = "implement"
command = "claude"
args = ["-p", "Implement this plan:\n\n{steps.plan.stdout}", "--model", "sonnet"]

Code review pipeline — generate diff, review, notify:

[[steps]]
action = "git/diff"

[[steps]]
name = "review"
command = "claude"
args = ["-p", "Review this diff:\n\n{prev.stdout}"]

[[steps]]
action = "notify/slack"
[steps.env]
SLACK_MESSAGE = "{steps.review.stdout}"

One-shot testing of any action:

granary action run worktree-claude --set id=task-123
granary action run agents/claude-work --set id=task-123 --dry-run

Inline pipelines in config.toml:

[actions.my-workflow]
description = "Inline pipeline"
[[actions.my-workflow.steps]]
action = "git/worktree-create"
[[actions.my-workflow.steps]]
action = "agents/claude-work"
cwd = "{prev.stdout}"

Bundled Registry Actions

Namespace Action Description
git/ worktree-create Create isolated git worktree, stdout: path
git/ worktree-remove Remove a git worktree
git/ diff Generate diff output
agents/ claude-work Run a task with Claude Code
agents/ codex-work Run a task with Codex
agents/ cursor-work Run a task with Cursor
agents/ opencode-work Run a task with OpenCode
notify/ macos macOS system notification
notify/ slack Post to Slack webhook

Full Changelog: v1.1.0...v1.2.0

v1.1.0

14 Feb 20:42

Choose a tag to compare

What's New

Actions System

Actions are reusable command configurations that can be shared across runners. This release introduces a layered override system for worker configuration.

Define actions as standalone files in ~/.granary/actions/<name>.toml:

command = "claude"
args = ["code", "--task"]
concurrency = 2
on = "task.unblocked"

[env]
CLAUDE_MODEL = "opus"

Or inline in ~/.granary/config.toml:

[actions.my-action]
command = "claude"
args = ["code", "--task"]
on = "task.unblocked"

Runners can inherit from actions via the action field:

[runners.my-runner]
action = "my-action"
concurrency = 4  # overrides the action's concurrency

Override chain: action defaults → runner config → CLI arguments.

New CLI Commands

  • granary config actions — list, add, update, remove, and show actions
  • granary worker start --action <name> — start a worker directly from an action

Silo GUI

  • Settings screen now has an "Actions" section for managing actions
  • Workers screen shows "Available Actions" alongside runners with quick-start buttons

Fully Backwards Compatible

All existing runner configurations and CLI usage continue to work unchanged. The action field on runners is optional and defaults to None.

v1.0.0

12 Feb 10:21

Choose a tag to compare

Granary v1.0.0

The first stable release of granary — a context hub for agentic work.

Silo: Native GUI

A full desktop app built with Iced. Browse projects, tasks, initiatives, runs, workers, settings, and logs — all without touching the terminal. Ships as Silo.app on macOS.

Trigger-Based Event System

Events now fire via SQLite triggers instead of application-level polling. Atomic claim-based consumption prevents double-processing across consumers. New granary events command for listing, filtering, watching, and draining.

CLI Redesign

  • Entity-first subcommandsrun <id> stop instead of run stop <id>
  • Merged singular/pluralproject and projects are the same command
  • Forgiving argument resolution — positional-to-flag coercion on creation commands
  • Visible aliases on all actions and top-level commands

Global-First Workspaces

Workspaces default to global scope. Named workspaces resolve correctly in daemon worker startup.

granary doctor --fix

Scans workspace and global agent files for granary instructions. --fix auto-injects missing ones.

Output Mode Enforcement

Strict handling of --output across all commands: table, JSON, and prompt modes.

Shared Types Crate

Models extracted into granary-types for reuse across granary, granaryd, and silo. Strongly-typed IDs throughout.


Full Changelog: v0.9.0...v1.0.0

v0.9.0

01 Feb 04:22
692011a

Choose a tag to compare

LLM-First CLI Redesign

Major UX overhaul making granary self-documenting for AI agents.

Highlights

  • Self-guiding CLI output - every command's output now serves as a complete tutorial; agents told to "use granary" can discover and complete any workflow by following output alone
  • granary init agent config injection - automatically injects "use granary" instructions into CLAUDE.md, .cursorrules, .github/copilot-instructions.md, and AGENTS.md (both global and local)
  • granary work - new command for agents to create and manage work sessions with structured context
  • granary plan - new planning command for agents to outline approach before execution
  • Agent file service - new service (1.2k lines) that detects, reads, and updates agent configuration files across all major AI coding tools
  • First-run experience - guided onboarding flow for new users
  • Integration tests - agent file detection/injection tests and first-run integration tests

Full Changelog: v0.8.0...v0.9.0

v0.8.0

30 Jan 21:40

Choose a tag to compare

Watch Mode & Organization Move

Highlights

  • --watch flag - continuous polling mode for 8 list commands (tasks, projects, workers, runs, sessions, initiatives, search, summary) with configurable --interval and clean terminal refresh
  • Moved to speakeasy-api org - repository transferred from danielkov/granary to speakeasy-api/granary
  • Improved getting started docs - added missing plugin install step for Claude Code setup
  • Install script fixes - more robust JSON parsing and version extraction in install scripts

Full Changelog: v0.7.0...v0.8.0

v0.7.0

28 Jan 22:19

Choose a tag to compare

Workers & Daemon System

Major release adding background task execution via a daemon-based worker system.

Highlights

  • Worker daemon - Unix socket-based daemon (granary daemon start/stop/status) that manages background worker processes with automatic lifecycle management
  • Worker runtime - task execution engine with template variable substitution, event polling, and run tracking
  • granary worker / granary run - CLI commands for registering workers and viewing run history
  • Pre-release aware versioning - install scripts filter pre-releases by default; --to flag and GRANARY_VERSION for pinning specific versions
  • Global config - new ~/.granary/config.toml for persistent user preferences
  • Event system - event poller and filter services for reactive worker triggers
  • Table output - new table formatter for richer terminal display
  • New DB migrations - tables for workers, runs, polled events, and cursor tracking
  • Claude Getting Started docs - documentation for integrating granary with Claude Code
  • Comprehensive test suite - daemon integration tests, worker tests, filter tests, template tests, and run service tests (+15k lines)

Full Changelog: v0.6.1...v0.7.0

v0.7.0-alpha.1

20 Jan 22:37

Choose a tag to compare

v0.7.0-alpha.1 Pre-release
Pre-release

Pre-release: Workers & Pre-release Versioning

Alpha preview of the workers system and pre-release version support.

Highlights

  • Pre-release aware versioning - install scripts now correctly filter pre-releases; GRANARY_VERSION env var allows pinning to specific versions including pre-releases
  • granary update --to <version> - install a specific version, including pre-releases
  • Worker daemon (preview) - Unix socket-based daemon for background task execution with worker management, event polling, and run tracking

Full Changelog: v0.6.1...v0.7.0-alpha.1

v0.6.1

15 Jan 22:50

Choose a tag to compare

Self-Update & Vendored TLS

Highlights

  • granary update - check for and install new versions directly from the CLI, with 24h cached update checks surfaced in --version output
  • granary update --check - non-destructive version check against GitHub releases
  • Vendored TLS - switched to vendored OpenSSL so builds work on musl/Alpine Linux without system TLS dependencies

Full Changelog: v0.5.0...v0.6.1