tatsumaki
Japanese README
tatsumaki is an agile project management tool for small Scrum teams that want a fast, story-centered workflow with point estimation, velocity tracking, and backlog forecasting.
The project is inspired by the workflow strengths of Pivotal Tracker, while being built as self-hostable open source software for modern web, CLI, and automation workflows.


Features
- Manage user stories and tasks, including creation, prioritization, and status transitions.
- Plan iterations and track velocity using a Pivotal Tracker-style workflow.
- Forecast backlog completion from team velocity.
- Use the CLI for local operations and automation.
- Synchronize with GitHub Issues in both directions.
Current Status
tatsumaki is pre-1.0 software. It is suitable for evaluation, local development, and early self-hosted use, but deployment and operations still expect familiarity with Cloudflare Workers, D1, KV, R2, and Cloudflare Access.
Screenshots
| Stories | Velocity |
|---|
 |  |
| Project settings | API keys |
|---|
 |  |
Tech Stack
- API: Cloudflare Workers + Cloudflare D1
- CLI:
tatsumaki command
- Desktop: Electron viewer shell + CLI refetch IPC
Desktop implementation guide: docs/desktop-app.md
Quick Start
bash .claude/skills/self-hosting-setup/scripts/safe-local-setup.sh
bun run dev
Open http://localhost:8787. Local development uses apps/web/wrangler.dev.toml, including local dev auth as dev@localhost.
For an agent-guided setup from local first run through Cloudflare self-hosting readiness, use the repository skill self-hosting-setup.
Self-Hosting Outline
- Create a Cloudflare Access application for tatsumaki and note its Audience (AUD) tag and team domain.
- Click the Deploy to Cloudflare button and provide the Access values when prompted.
- Let Cloudflare provision the Worker resources defined in
apps/web/wrangler.toml.
- Configure the production custom domain or route in the Worker dashboard.
- Confirm that D1 migrations ran during the deploy command.
Deployment Configuration
apps/web/wrangler.toml is committed as the public self-hosting configuration. It defines the Worker entrypoint, compatibility settings, static asset binding, D1/KV/R2/Durable Object binding names, cron trigger, and Durable Object migration. It intentionally does not contain Cloudflare Access values or route settings.
Deploy to Cloudflare uses this repository subdirectory:
https://github.com/shwld/tatsumaki/tree/main/apps/web
Use these environment-specific settings:
| Area | Values |
|---|
| Variables and Secrets | ACCESS_AUD, ACCESS_TEAM_DOMAIN |
| Domains & Routes | Production custom domain or route |
| Bindings | DB, OAUTH_KV, STORY_ATTACHMENTS, USER_AVATARS, PLANNING_POKER_DO, ASSETS |
Recommended Cloudflare Workers Builds settings:
| Field | Value |
|---|
| Build command | bun run build |
| Deploy command | bun run deploy |
| Non-production branch deploy command | bun run deploy:upload |
| Path | apps/web |
The production deploy commands (bun run deploy and bun run deploy:worker) apply D1 migrations through the DB binding before publishing the Worker so schema changes are not skipped. Non-production branch deploys upload Worker versions without running production database migrations.
ACCESS_AUD is the Audience (AUD) tag for the Cloudflare Access application that protects tatsumaki. ACCESS_TEAM_DOMAIN is the Access team domain, such as your-team.cloudflareaccess.com.
Local deploys can use the root helper:
bun run deploy:web
wrangler.toml sets keep_vars = true, and deploy:worker also passes --keep-vars, so dashboard-managed variables are preserved across Wrangler deploys.
References: