The changelog grep commands return exit code 1 when no commits match, which set -euo pipefail treats as fatal. Add || true guards so the script continues to the tag/push/release steps. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Storkit
A story-driven development server that manages work items, spawns coding agents, and runs them through a pipeline from backlog to done. Ships as a single Rust binary with an embedded React frontend. Communicates via Matrix, WhatsApp, and Slack bot transports, and exposes MCP tools for programmatic access.
Prerequisites
- Rust (2024 edition)
- Node.js and npm
- Docker (for Linux cross-compilation and container deployment)
cross(cargo install cross) for Linux static builds
Building for production
cargo build --release
The release binary embeds the frontend via rust-embed. Output: target/release/storkit.
For a static Linux binary (musl, zero dynamic deps):
cross build --release --target x86_64-unknown-linux-musl
Docker:
docker compose -f docker/docker-compose.yml build
Running in development
# Run tests
script/test
# Run the server
cargo run -- --port 3000
# In another terminal, run the frontend dev server
cd frontend && npm install && npm run dev
Configuration lives in .storkit/project.toml. See .storkit/bot.toml.*.example for transport setup.
Releasing
Requires a Gitea API token in .env (GITEA_TOKEN=your_token).
script/release 0.6.1
This bumps version in Cargo.toml and package.json, builds macOS arm64 and Linux amd64 binaries, tags the repo, and publishes a Gitea release with changelog and binaries attached.