unsubbed.co

Peppermint

Peppermint is a TypeScript-based application that provides ticket management and help desk.

Open-source ticket management, honestly reviewed. No marketing fluff, just what you get when you self-host it.

TL;DR

  • What it is: An open-source, self-hosted ticket management and help desk system — a stripped-down alternative to Zendesk and Jira for teams that don’t need enterprise bloat [GitHub README].
  • Who it’s for: Small internal IT teams, solo founders, and small ops teams who need a functional support queue without paying per-agent SaaS pricing. Especially useful if you need an air-gapped or fully offline deployment [website].
  • Cost savings: Zendesk starts at $55/agent/month on its current Suite plans. A 3-agent Peppermint install runs on a $5–10 VPS with zero per-agent fees [GitHub README][website].
  • Key strength: Genuinely lightweight — it runs on a Raspberry Pi, needs minimal RAM, and installs in a single Docker Compose command. For teams that want something working in an afternoon, it’s hard to beat [website].
  • Key weakness: This is a young, one-developer project. The license situation is unclear (GitHub shows “NOASSERTION”), documentation is thin, and the feature set stops well short of Chatwoot or Zammad for anything resembling omnichannel support [merged profile][1].

What is Peppermint

Peppermint is a self-hosted ticket management system built in TypeScript/Next.js with a PostgreSQL backend. The GitHub description calls it “an open source issue management & help desk solution — a Zendesk & Jira alternative.” That’s accurate as far as it goes, though the comparison flatters it a bit: it’s more squarely a lightweight internal help desk than a Zendesk-class customer support platform [GitHub README].

The project started as a portfolio piece by a solo developer (GitHub handle @potts99, Jack Andrews) learning React and Node.js. The README is candid about this: it looked terrible at first, but it worked, and it got him a job. He’s been building on it since, and as of version 0.5.4 it has matured into something with real mailbox integration, OIDC auth, webhooks, and a REST API [website][GitHub README].

With 3,068 GitHub stars and 190k Docker pulls, it has genuine traction for its niche [merged profile][website]. It’s not Chatwoot (which has 165k monthly site visits and Ruby/Vue backing) [1], but it’s also not trying to be. The pitch is simple: a help desk that fits on your existing server and doesn’t cost anything per seat.


Why people choose it

Third-party review coverage for Peppermint is thin — most search results for “Peppermint review” surface unrelated businesses. What exists comes from tool-listing aggregators rather than deep dives, which itself tells you something: this is a tool people find through GitHub, not through blog posts [1][4].

The reasons people choose it, based on aggregated community signals:

Zendesk/Freshdesk cost avoidance. The most common thread in discussion is simply that Zendesk charges per agent per month, and a 5-agent team paying $55–89/seat is looking at $3,300–$5,340/year for what is essentially a ticket queue. Peppermint self-hosted on a $6 VPS is $72/year flat, regardless of how many agents you add [website]. That math lands.

Offline and air-gapped use cases. The website explicitly calls out that Peppermint runs without an internet connection and all data stays on your server [website]. For internal IT helpdesks in regulated environments — or just teams that don’t want customer tickets routed through a US SaaS vendor’s infrastructure — this matters.

Low hardware requirements. The website mentions Raspberry Pi as a viable deployment target. Most help desk SaaS alternatives require you to trust their cloud; most self-hosted alternatives (Zammad, Chatwoot) need a real server with 2–4GB RAM. Peppermint’s positioning here is genuinely differentiated [website].

Simplicity over features. The README describes the goal as “simple to use with a simple logical workflow.” For a team that just needs: ticket in, agent picks it up, ticket closed — without configuring SLA rules, CSAT surveys, and AI deflection — Peppermint is enough. The listing on AlterOpen [1] categorizes it under Customer Support, CRM, and Project Management, suggesting users pull it in multiple directions.

What reviewers are not saying: nobody is writing about deep feature satisfaction, community support quality, or long-term production stability. That absence is a data point.


Features

Based on the GitHub README and website, the current feature set as of version 0.5.4:

Core ticketing:

  • Ticket creation with a markdown editor and file upload support [GitHub README]
  • Client history log per contact [GitHub README]
  • Ticket status management (the basics — open/closed workflow) [GitHub README]
  • Markdown-based notebook with todo lists, available to agents [GitHub README]

Email integration:

  • Mailbox configuration via SMTP/IMAP — emails convert automatically into tickets [website]
  • Email notifications [website]

Authentication and access:

  • OIDC authentication, meaning you can connect to an existing identity provider (Okta, Keycloak, Auth0, etc.) [website]
  • Default admin credentials ship hardcoded in the README (admin@admin.com / 1234) — change these immediately [GitHub README]

Integrations and API:

  • Webhooks for connecting to third-party services [website]
  • REST API (listed as a canonical feature in the merged profile) [merged profile]

Deployment:

  • Docker Compose with bundled PostgreSQL — the primary deployment path [GitHub README]
  • pm2 or local Node.js as alternatives [GitHub README]
  • Kubernetes-ready via Docker (the website mentions k8s scalability) [website]
  • One-line installer for Ubuntu/Debian via spearmint.sh [GitHub README]
  • Available on Linode marketplace as a one-click deploy [GitHub README]

What it doesn’t have (compared to Chatwoot, Zammad, or Freshdesk):

  • Live chat widget
  • Multi-channel inbox (Twitter/Facebook/WhatsApp)
  • Canned responses library
  • SLA policies and escalation rules
  • Built-in reporting and CSAT
  • Knowledge base (only an agent-side notebook, not a customer-facing help center)
  • AI deflection or chatbot

The feature set is deliberately minimal. That’s a design choice, not an oversight — but it means Peppermint is not replacing a full Zendesk implementation. It replaces the part of Zendesk you actually use if you’re a 5-person team.


Pricing: SaaS vs self-hosted math

Peppermint has no paid tier and no SaaS offering. The software is free to self-host. The only cost is infrastructure.

Self-hosted Peppermint:

  • Software: $0 [GitHub README]
  • A $5–10/month VPS (Hetzner, Contabo, Hostinger) covers a team of any size
  • Optional: domain name (~$10/year) for a proper URL

What you’re replacing — Zendesk:

  • Suite Team: ~$55/agent/month billed annually
  • Suite Growth: ~$89/agent/month
  • Suite Professional: ~$115/agent/month
  • A 3-agent team on the entry tier: $1,980/year

Freshdesk:

  • Free tier: up to 10 agents (limited features)
  • Growth plan: ~$15/agent/month
  • Pro plan: ~$49/agent/month
  • A 3-agent Growth team: $540/year

Concrete savings at 3 agents:

  • Zendesk Team → Peppermint self-hosted: save ~$1,908/year
  • Freshdesk Growth → Peppermint self-hosted: save ~$468/year (smaller gap, and Freshdesk free tier may already serve you)

The math is compelling against Zendesk. Against Freshdesk’s free tier, there’s no cost argument — you switch for data ownership and offline capability, not savings.

Caveat: pricing data for Zendesk and Freshdesk comes from publicly available plan pages and may have changed; verify current rates before making decisions. Peppermint has no pricing page because there’s nothing to price.


Deployment reality check

The install path is Docker Compose, and it’s genuinely simple. The README ships a working docker-compose.yml that pulls the pepperlabs/peppermint:latest image alongside a Postgres container. You set four environment variables (DB credentials and a SECRET), expose port 3000, and you have a running instance [GitHub README].

What you actually need:

  • Any Linux host with Docker installed (VPS, local server, Raspberry Pi)
  • 512MB–1GB RAM is sufficient for small teams
  • A reverse proxy (Caddy or nginx) + TLS certificate if you want HTTPS — not bundled
  • SMTP credentials if you want outbound email notifications

What can go sideways:

Default credentials are a real risk. The README defaults to admin@admin.com / 1234 and a hardcoded SECRET: 'peppermint4life' in the docker-compose example. Any instance exposed to the internet without changing these is compromised from minute one [GitHub README]. This is a documentation failure for a tool marketed at non-technical founders.

License ambiguity. The merged profile shows license as “NOASSERTION” — meaning GitHub’s license detection couldn’t identify it. The README doesn’t state a license. If you’re deploying this for a client or embedding it in a commercial product, you have no clear answer on what you’re allowed to do. The project calls itself “open source” throughout, but open source without an identified license is not legally open source [merged profile].

One maintainer. The GitHub activity shows this is primarily one developer’s project (Jack Andrews, @potts99). That’s not a dealbreaker for internal tooling — many great self-hosted tools run this way — but it’s different from Chatwoot (company-backed, 170+ contributors) or Zammad (enterprise-funded). If Jack moves on, you’re forking it yourself or migrating [GitHub README].

Version velocity. The README still shows version 0.2 in the badge header while the website announces 0.5.4. That disconnect suggests documentation doesn’t always keep up with releases [GitHub README][website].

Realistic setup time for a technical user: 20–45 minutes including HTTPS setup. For a non-technical founder following a guide: 2–3 hours if they hit the expected snags (reverse proxy config, SMTP troubleshooting). The Linode one-click option removes most of that friction [GitHub README].


Pros and cons

Pros

  • Genuinely lightweight. Runs on a Raspberry Pi, minimal RAM requirements, single Docker Compose command [website]. Rare in the help desk category.
  • No per-agent pricing — ever. Add 50 agents, the infrastructure cost doesn’t change [GitHub README].
  • OIDC support. Most lightweight help desks skip this entirely. OIDC means you can hook into Okta, Keycloak, or Google Workspace without managing separate user accounts [website].
  • Mailbox-to-ticket pipeline. SMTP/IMAP email ingestion means customers can email an address and agents see tickets — the core workflow many teams need [website].
  • Offline capable. No internet dependency once deployed. Useful for regulated environments, internal IT, and air-gapped networks [website].
  • Fast install. Docker Compose is as close to one-command as self-hosted gets [GitHub README].
  • REST API included. Basic integration capability without needing webhooks for everything [merged profile].

Cons

  • License is legally unclear. “NOASSERTION” on GitHub means no formally identified open source license. Deploy with caution in commercial contexts [merged profile].
  • Dangerous defaults. Hardcoded admin credentials and a public SECRET in example configs are a security trap for non-technical deployers [GitHub README].
  • Single maintainer risk. One developer project with modest contributor base. Bus factor is real [GitHub README].
  • No customer-facing knowledge base. The notebook is for agents. Customers can’t self-serve from a help center [GitHub README].
  • No live chat, no multichannel. If customers contact you via WhatsApp, Twitter, or Messenger, Peppermint doesn’t handle it. It’s email and web form only [GitHub README].
  • Thin third-party coverage. Very limited independent reviews means limited visibility into real production failures, scaling behavior, or long-term reliability [1][4].
  • Documentation lags releases. README version badge still shows 0.2 while product is at 0.5.4 [GitHub README][website].
  • No reporting. No built-in metrics on ticket volume, resolution time, or agent performance. You’re flying blind on team efficiency.

Who should use this / who shouldn’t

Use Peppermint if:

  • You’re a 2–10 person team paying Zendesk per-agent fees and most of your support is email-based.
  • You need a help desk that runs completely offline or inside a private network.
  • Your server is a Raspberry Pi, a low-end VPS, or an old office machine and you can’t justify the RAM overhead of Zammad or Chatwoot.
  • You have a technical person (or one afternoon) to handle the Docker deploy and credential hardening.
  • You want OIDC SSO connected to an existing identity provider without paying for it.

Skip it (pick Freescout or Chatwoot instead) if:

  • You need a customer-facing knowledge base or self-service portal.
  • Your customers contact you via channels beyond email.
  • You’re deploying for a client and need a clear open source license you can point legal at.
  • You want an active community and multiple contributors reviewing security issues.

Skip it (stay on Freshdesk free) if:

  • You’re under 10 agents and don’t have strong data sovereignty requirements — Freshdesk’s free tier gives you more features for the same price ($0).

Skip it (pick Zammad) if:

  • You need full omnichannel (email, chat, Twitter, phone) with mature reporting and SLA management and you have a real server to run it on.

Alternatives worth considering

  • Freescout — PHP-based, Help Scout/Zendesk alternative, mature codebase, clear MIT-style license, shared mailbox first. More feature-complete for email support than Peppermint [1].
  • Chatwoot — Ruby/Vue, omnichannel (email, live chat, WhatsApp, Telegram, Twitter), company-backed, Apache 2.0 license. Steeper resource requirements but dramatically broader capability [1].
  • Zammad — Ruby/TypeScript, enterprise-grade ticketing with SLA management, reporting, and a large integration catalog. GNU AGPL license. Needs more RAM but it’s production-tested at scale [1].
  • Freshdesk (free tier) — Up to 10 agents free, no self-hosting needed, far more features than Peppermint. Only reason to choose Peppermint over this is data sovereignty or offline requirements.
  • Zendesk — The incumbent. Most feature-complete, most expensive, fully proprietary. The tool Peppermint is explicitly trying to replace for cost-sensitive teams [GitHub README].

For a non-technical founder with pure email-based support and 2–5 agents, the realistic shortlist is Peppermint vs Freescout vs Freshdesk free. Peppermint wins on lightness and OIDC; Freescout wins on features and clearer licensing; Freshdesk free wins on zero setup time.


Bottom line

Peppermint is a functional, lightweight self-hosted help desk that solves a narrow problem well: replace a per-seat SaaS ticket queue with something that runs on minimal hardware, integrates with your email, and costs $0 in software licensing. It’s not competing with Zammad or Chatwoot for feature depth, and it shouldn’t be evaluated that way. The real competition is Zendesk Basic for a 3-agent team that’s tired of the invoice — and on that comparison, Peppermint wins on economics decisively.

The caveats are real: unclear license, dangerous default credentials, single-maintainer risk, and thin third-party validation. A non-technical founder should have someone technical handle the deploy and hardening, or pay for a one-time setup rather than discovering the default password problem after the fact.

If the self-hosting setup is the blocker, that’s exactly what upready.dev deploys for clients. One-time fee, done, you own the infrastructure.


Sources

  1. AlterOpen — Peppermint: Top 12+ Alternatives (Free/Open Source) in 2024. https://alteropen.com/alternative/peppermint-lab-peppermint
  2. Microlaunch — Peppermint Reviews. https://microlaunch.net/p/peppermint

Primary sources:

Features

Integrations & APIs

  • REST API