Peppermint Ticketing Software for help desk technicians.
Peppermint Ticketing
Peppermint prioritizes:
Simplicity and speed
-
Developer freedom
-
Data sovereignty
-
Low infrastructure footprint
It’s designed for small to medium-sized teams who want something modern, minimalistic, and powerful — without being locked into enterprise subscriptions or bulky frameworks.
Architecture Overview
Peppermint’s backend is written primarily in TypeScript (Node.js), with a PostgreSQL database and a React-based frontend.
This makes it modular, fast, and compatible with modern deployment standards such as Docker, Kubernetes, and cloud instances (AWS, Linode, DigitalOcean, etc.).
Architecture Components
Component | Technology / Purpose |
---|---|
Backend => | Node.js (Express / Nest-like structure) |
Database => | PostgreSQL (relational, handles tickets, users, roles, settings) |
Frontend => | React + TailwindCSS (provides modern responsive UI) |
Authentication => | Local accounts, with optional external providers (GitHub, Google planned) |
Email handler => | IMAP for inbound, SMTP for outbound |
Storage => | Local or S3-compatible object storage (for attachments) |
Containerization => | Fully Docker-ready (docker-compose.yml included) |
Ticket Lifecycle
Peppermint organizes support tasks around tickets — each representing a client request, issue, or report.
A typical ticket workflow:
-
Ticket Creation
-
Tickets can be created by:
-
Clients via email (auto-parsed via IMAP)
-
Agents via the dashboard
-
API requests from other tools or chatbots
-
-
-
Ticket Assignment
-
Tickets can be assigned manually to agents or automatically based on departments or tags (optional plugin).
-
-
Communication Thread
-
Each ticket forms a threaded conversation between support and the customer.
-
Supports Markdown formatting, file uploads, internal notes, and status changes.
-
-
Status & Labels
-
Default statuses: Open, In Progress, Pending, Closed.
-
Admins can create custom labels or priorities (e.g., Critical, Low, Scheduled).
-
-
Resolution & Archiving
-
Once a ticket is resolved, it’s closed but remains searchable for auditing or training purposes.
User Roles & Access Control
Peppermint defines clear roles with different privileges:
Role | Capabilities |
---|---|
Admin => | Full system control, configuration, user management, integrations |
Agent => | Manage and respond to tickets, add internal notes, assign or escalate |
Client/User => | Submit tickets, reply to their own tickets, view status updates |
Viewer (optional) => | Read-only view for reports or monitoring |
Access is controlled via role-based permissions and token authentication.
Communication Channels
Peppermint’s design focuses on multi-channel ticket creation while maintaining simplicity:
-
Email-to-ticket conversion via IMAP/SMTP.
-
Web dashboard ticket submission.
-
API endpoints for integration with chatbots or third-party systems (e.g., Slack bots or customer portals).
Future roadmap discussions include integrating:
-
Live chat widget.
-
Webhook-based ticket generation (for monitoring tools like Zabbix, Grafana, or Uptime Kuma).
Interface & User Experience
Peppermint has one of the cleanest UIs among open-source help desks.
Interface Highlights
-
Dark and Light themes: Peppermint light & dark, Solarized light, Forest, Material Light and Github light.
-
Dashboard with live counters (open tickets, response time, SLA indicators)
-
Real-time notifications for updates and ticket assignments
-
Search bar and filtering system (by ID, keyword, client, label, etc.)
-
Keyboard shortcuts for ticket navigation
-
Integrated Markdown editor for replies and notes
The design feels similar to Notion or Linear — intuitive, smooth animations, and a focus on text readability.
Built-In Utilities
Peppermint includes internal tools that enhance the workflow:
-
Notebook – A Markdown-based private documentation space for agents. Ideal for jotting internal procedures or notes.
-
To-Do Lists – Agents can manage personal tasks or ticket follow-ups.
-
History Log – Tracks every action (assignment, reply, tag, etc.) for auditing.
-
Statistics Panel – Displays current ticket distribution by status, agent load, and response times.
-
Email Templates – Customizable automatic replies and notification emails.
-
Custom Branding – Add your organization’s name, logo, and colors.
Integration Possibilities
Peppermint offers an API and integration options:
-
Webhooks – Triggered on ticket creation, update, or closure.
-
REST API – Full CRUD access for tickets, users, and messages.
-
Email Parser – Converts incoming emails into structured tickets.
-
Third-party apps – Integration with monitoring systems, bots, or CRMs.
-
Zapier / n8n compatibility – Via webhooks or API calls.
Security Model
Peppermint focuses on security through a combination of best practices:
-
Passwords hashed via bcrypt.
-
HTTPS enforced (recommended).
-
CSRF & CORS protection built-in.
-
Token-based authentication (JWT).
-
Strict role-based access controls.
-
Optional IP whitelisting for admin access (manual config).
-
Attachments stored outside webroot for better data protection.
For self-hosters, regular patching and Docker updates are crucial for maintaining security.
Requirements.
-
Lightweight footprint: Requires minimal resources — can run on 1-2GB RAM VPS.
-
Modern UI: Comparable to commercial tools, unlike older open-source helpdesks (osTicket, OTRS).
-
Custom data ownership: 100% local control over databases, tickets, and attachments.
-
Open API: Enables easy automation and custom scripts.
-
Active developer community: Frequent commits and community input.
-
Markdown support: Clean communication formatting and internal note-taking.
-
Flexible branding: Perfect for MSPs or IT consultants who want white-label ticketing.
Limitations.
-
No native mobile app yet (responsive web app works fine though).
-
Limited reporting dashboards (custom SQL queries or external BI tools needed).
-
No built-in SLA policy engine (planned feature).
-
Manual setup for mail parsing — advanced IMAP/SMTP configs required.
-
Community support — depends on GitHub Issues and Discord; no official enterprise support plan.
Use Cases
-
Internal IT Help Desk: For managing employee support tickets.
-
Managed Service Providers (MSPs): For tracking client issues.
-
Educational institutions: Handling student and staff tech requests.
-
Web hosting companies: Supporting hosting customers.
-
Small businesses: Centralizing client requests without heavy SaaS fees.
Roadmap & Community
According to community posts and GitHub milestones, the roadmap includes:
-
Built-in Knowledge Base module
-
Chat widget for websites
-
Time tracking & SLA reports
-
2FA & SSO
-
Multi-language support
-
Audit logs and advanced reporting
The project is led by Peppermint Lab, with an active GitHub repository and self-hosted documentation portal at docs.peppermint.sh, click here to check the official documentation.
Setting up & Installation & Hands-on.
- using docker: I am using kali Linux for this installation, firstly we need docker and docker-compose to run peppermint on our host, using the following commands by kali, we have to update our repo and use docker.io instead of docker otherwise we would end up in installing the container version of docker.
This would be the main dashboard. From here you can add users, clients, admins, change theme, open tickets.
The admin panel also provides access to a "roles feature" where you can make custom roles with specific permission of your choosing.
curl -sSL -o deployer.sh https://deploy.spearmint.sh && chmod +x deployer.sh && ./deployer.sh
Comments