We just launched on Product Hunt. Upvote chamoji

Release notes on autopilot

Every commit explains itself.

Chamoji turns the commits your developers already write into release notes, workstreams and project memory. The CLI is free and open source; Cloud shares it with everyone who never opens git.

$ npm i -g @chamoji/cli
Star on GitHub

Node.js 22 or newer. Or run it once with npx @chamoji/cli changelog.

$ chamoji changelog --release 0.8.0

What your team wrote

  1. 9e34f66fix(auth): keep the session after a refresh
  2. cebfb1dfix session timeout
  3. a5c0430โœจ List the signed-in devices
  4. b2fd382feat: add passkey sign-in
  5. 55bcf07refactor session store
  6. f3ae488docs: update readme
  7. 1f0c2abBump vite from 5.2.0 to 5.2.1
  8. 7d41e90Bump zod from 3.22.0 to 3.22.4
  9. c83b2d5Bump tsx from 4.7.0 to 4.7.1
  10. 9642a3fwip

What everyone reads

0.8.0

Added

  • โœจ List the signed-in devices
  • โœจ add passkey sign-in

Fixed

  • ๐Ÿ› auth: keep the session after a refresh
  • fix session timeout

Changed

  • refactor session store

Documentation

  • ๐Ÿ“ update readme

Dependencies

  • โฌ†๏ธ 3 dependency updates: tsx, zod, vite

Miscellaneous

  • wip

a5c0430The free CLI

Commits, versions and releases, handled.

One npm install, no account. Jev's AI joins in only when you switch it on.

$ git commit

Commits that sort themselves

A plain git commit opens the composer: gitmoji, scope, title, why. With your opt-in, Jev suggests the gitmoji in about 100 ms and flags changes that may break.

$ chamoji next-version

The version, from the commits

โœจ makes a minor, ๐Ÿ› a patch, ๐Ÿ’ฅ a major.

$ chamoji hook install

Every shell, every hook manager

zsh, bash, fish, PowerShell, husky and lefthook.

$ git config

Your diffs stay home

AI is opt-in. Secrets files are never sent, not even their names.

CHANGELOG.md

Notes from any history

Gitmoji, Conventional or plain messages.

$ chamoji release

A release in one command

Version, changelog, commit, tag and GitHub release. If anything fails before the tag, your repo goes back to where it was.

GitHub Action

Release notes on every PR and tag

Each pull request shows the changelog lines it adds and the version it makes. Each tag gets its GitHub Release notes.

Coming from gitmoji-cli?Run chamoji hook install. It replaces gitmoji-cli's hook, leaves any other hook alone, and your settings carry over.

5be2d71Monorepos

One repo. A release for each app.

Run chamoji setup once and it writes the config. Then each app gets its own version, tag and changelog, and a change to a shared package rides along into the next release of every app that uses it.

1Once: chamoji setup

chamoji setup

chamoji setup

โ€ฆ

Found 2 apps (web, mobile) and 1 internal package. web and mobile get their own versions. Shared changes ride along with each app's own releases.

Past releases under these answers

  • web v0.1.0: same 4 entries
  • mobile v1.0.0: you shipped 2 entries; chamoji would write 3, and the extra one is "๐Ÿ› Fix the splash screen on Android"

The next release from here would be:

  • web 0.1.0 โ†’ 0.2.0 (minor) web/v0.2.0
  • mobile 1.0.0 โ†’ 1.0.1 (patch) mobile/v1.0.1

Enter save ยท c change something ยท Esc cancel

โ—‹ memory sharing is off in this clone

Share memory through origin? (Y/n) yes

โ—‹ Claude Code isn't connected here yet

Connect Claude Code here? (Y/n) yes

โ—‹ the commit composer hook isn't installed in this clone; chamoji setup hook --yes installs it

Install the commit composer hook? (y/N) no

Wrote chamoji.config.json. Review it and commit it; git restore chamoji.config.json undoes this.

It writes the release section of chamoji.config.json and never commits: review it and commit it.

  • Your appsApps are the packages under apps/. Test and tool apps such as e2e and dev-tool are left out.
  • Your tagsEach app keeps the tag format it uses, and chamoji still reads the ones it used before. No tag is renamed, moved or deleted.
  • Your starterTags that came with a template are ignored, its authors' commits stay out of your notes, and each sync is one line.

Measured on one of our own app monorepos

  • 2,343commits; web and mobile found, e2e and dev-tool left out
  • ~1 sto the first screen
  • 136inherited tags ignored, with 5 patterns
  • 27 โ†’ 0starter commits in the first release notes

Each step still runs on its own: chamoji init, chamoji init --agents and chamoji hook install. chamoji setup --yes takes every recommended answer, for CI and agents, and never installs the hook.

2Every release: chamoji release

chamoji release

Your files

  • apps/
  • web/+ shared change
  • app/pricing/page.tsxA
  • package.json0.1.00.2.0M
  • CHANGELOG.mdM
  • mobile/+ shared change
  • app/notifications.tsxM
  • app.config.ts1.0.01.0.1M
  • package.json1.0.01.0.1M
  • CHANGELOG.mdM
  • packages/
  • supabase/used by web and mobile
  • src/session.tsM
  • chamoji.config.jsonwritten by chamoji setup

Commits

  1. 5be2d71๐Ÿ”’ Refresh the session tokenpackages/supabase
  2. a1f3c09โœจ Add the pricing pageapps/web
  3. c4e8a12๐Ÿ› Fix the notification badgeapps/mobile

Next release

  • apps/webReleases nextweb/v0.2.0
  • apps/mobileReleases nextmobile/v1.0.1
  • packages/supabaseNever released on its own

apps/web/CHANGELOG.md

Unreleased0.2.0

web/v0.2.0

Added

  • โœจ Add the pricing page

Security

  • ๐Ÿ”’ Refresh the session token via packages/supabase

apps/mobile/CHANGELOG.md

Unreleased1.0.1

mobile/v1.0.1

Fixed

  • ๐Ÿ› Fix the notification badge

Security

  • ๐Ÿ”’ Refresh the session token via packages/supabase

chamoji release: each app gets its own version, tag and changelog. The shared package gets none.

Version apps on their ownRun chamoji setup with chamoji 0.14.0 or newer. It writes the release section of chamoji.config.json and never commits. Without that section, the repo stays one package with one version. Read the setup docs

b2fd382Workstreams

A week of commits. One headline.

Name a piece of work once. The release notes show it as one Highlight, with its commits folded underneath.

your terminal

CHANGELOG.md

0.8.0

No commits yet.

Added
Highlights
๐Ÿ” Auth revamp
โœจ List the signed-in devicesauth-revamp
โœจ Add passkey sign-inauth-revamp
Fixed
๐Ÿ› Fix the session timeoutauth-revamp
๐Ÿ› Fix the footer link
Changed
โ™ป๏ธ Rename the session storeauth-revamp

Name the work once. It goes in .chamoji/workstreams.yml, which you commit, so the team shares it. Which one is active stays on your machine.

25edfe7Project memory

Git keeps what changed. Project memory keeps why.

The reasoning behind a commit stays in git, long after the branch is gone, and one command away.

src/auth.ts

Pick a line

chamoji why

$ chamoji why src/auth.ts:4
25edfe7 ๐Ÿ› Fix the session timeout
Maya, 2026-11-01
Why: the API drops idle connections after 30 seconds
Gotcha: the retry must not repeat a POST
Follow-up: move the limit into config

An intent card: up to four lines in a commit message

Why:

The reason for the change.

Constraint:

A limit the change had to live within.

Gotcha:

Something that will trip up the next person.

Follow-up:

Work this change leaves for later.

Written with the commit, by you or your agent. Jev never writes or changes a card.

$ chamoji memory search "idle connections"
25edfe7 ๐Ÿ› Fix the session timeout
Why: the API drops idle connections after 30 seconds
Gotcha: the retry must not repeat a POST

Find the old decision

Search every commit and remembered workstream by what they say. It needs no network and no key.

# once per clone
$ chamoji init
# merge with origin, then push
$ chamoji memory sync

Share it between clones

Memory lives in git, on its own ref. Two clones that remembered different work keep both.

$ git commit -m "๐Ÿ› Fix the session timeout"
Denied: Add why this change was made
$ git commit -m "๐Ÿ› Fix the session timeout" -m "Why: the API drops idle connections"
[main 25edfe7] ๐Ÿ› Fix the session timeout

Your agent leaves the why

With chamoji init --agents, Claude Code is sent back to add a card when a commit has none. Any MCP agent can read memory through three read-only tools.

9e34f66Ship

Ship it, then show it.

Cut the release from your terminal, your CI or your coding agent. Then put it where people already look.

A chamoji repo card: version 0.14.0, released 4 Nov 2026, with 16 releases, 258 commits and 99% sorted
$ npx skills add HeavenlyEntity/chamoji-ai --skill chamoji-release

Release from your coding agent

The chamoji-release skill teaches Claude Code, Codex, Cursor and other agents to pick the version, write the notes and tag the release. It shows you the notes and asks before it pushes.

# .github/workflows/card.yml
- uses: HeavenlyEntity/chamoji-ai@v0.14.0
  with:
    mode: card

A card for your readme

The Action keeps an image of your latest release and a few stats about it, on every tag and once a day. Paste it into your readme once.

Cloud

Context for everyone who never opens git.

Developers keep writing commits as they do today. Product, support and new teammates get the why.

Hosted release notes

A public changelog page for each project, a plain-language version for customers next to the engineering one, and Slack and email digests. Written from git, not by hand.

Context insurance

Project memory in a browser, for people who never clone the repo. The why behind every change survives handoffs and people leaving, and new hires get an onboarding pack for each workstream.

Review packets in CI

Every pull request gets a packet: what the work is for, what to read first, and which changes need human eyes. The AI points the way; people make the call.

Pricing

Free for developers. Paid for teams.

The CLI never costs anything. Cloud is priced per repository, not per seat, so adding teammates is free.

CLI

Free

Forever. MIT licensed.

  • Changelogs and next-version from any commit style
  • AI sorting with your own TypeSafe key
  • Commit composer, workstreams and project memory
  • Runs offline; no account
$ npm i -g @chamoji/cli

Cloud Team

Early access

TBA

Priced per repository. Unlimited teammates.

  • Everything in the CLI
  • Hosted release notes with a custom domain
  • Customer and engineering versions of each release
  • Slack and email digests
  • Team memory in a browser and onboarding packs
  • Review packets for private repositories

Organization

Let's talk

For many repositories and teams.

  • Everything in Cloud Team
  • Single sign-on and roles
  • Audit log
  • Data retention controls and a DPA
Contact us

FAQ

Questions.

Answers to what developers ask most. Anything else, open an issue on GitHub.

chamoji is a free, open-source command-line tool that turns git history into changelogs, semantic versions and releases. It reads gitmoji, Conventional Commits and plain commit messages, writes the CHANGELOG.md section, bumps the version, and makes the release commit and tag. It also groups commits into workstreams and keeps the reasons behind changes as project memory in git.

Ready for your next release.

Start with the free CLI today, and join the waitlist for Cloud.

View on GitHub
$ npm i -g @chamoji/cli

Chamoji Cloud ยท early access

Join the waitlist

Hosted release notes, shared team memory and review packets for your whole team. Leave your email and we'll tell you when it opens.

One email when early access opens. No newsletter, and we never share your address.