Case study — Nyrix
We wanted proof that a well-designed system removes work. So we built one.
Nyrix is a self-hosted CRM & service desk for MSPs and professional-services teams — ticketing, SLAs, workflows, and reporting designed around how a service team actually operates, with an AI layer where it helps. It’s live production software, still run by the team that builds it.
Product
Nyrix — CRM & service desk
Built by
BluNova Solutions
Focus
Workflows · SLAs · reporting
Status
Live production software
Why it matters
What building Nyrix taught us
The process comes first
Nyrix’s ticket types, queues, and workflows mirror how a service team really moves work — statuses, approvals, and hand-offs modelled before any screen was drawn.
Measure what matters
Per-client SLA clocks and an operations dashboard make response and resolution time visible, so improvement is something you can track, not a feeling.
Ship the whole thing, not a demo
SSO, rate limiting, CSP headers, SLA math — the unglamorous 80% that separates a working system from a prototype. AI helps where it earns it, and degrades gracefully when it can’t.
01 — AI layer
AI & integrations
Nyrix is built for AI from the start — an MCP server for external AI clients, plus an in-app support chat for your agents.
- MCP server at /api/mcp: list/search/get tickets, list accounts/contacts/types, and mutations like create_ticket, add_comment, reply_to_customer, change_ticket_status, assign_ticket
- Works with Claude Desktop and Cursor via an org-wide hashed bearer token
- In-app AI support chat with read-only tools, token caps, and rate limiting — degrades gracefully with no API key
02 — Core
Ticketing that scales
The core of Nyrix. Every ticket carries a human identifier, subject, type, status, queue, account, contact, assignee, priority, and free-form custom values — plus email-threading and SLA clocks.
- Dense table view and a Kanban board (?layout=board)
- Saved views with live sidebar counts: My Tickets, Unassigned, Team’s Tickets, All Open, Closed Today, and SLA-risk
- Ticket detail with an events timeline, email conversation, and reply
03 — PSA
Customizable workflows & ticket types
The PSA half of Nyrix. Define ticket types with their own custom fields, tied to a queue and a workflow of statuses, transitions, and actions — with optional templated email on transition.
- Prebuilt templates: IT Incident, Service Request, Major Incident Management, Change Management
- Matching action sets: Acknowledge, Approve/Reject, Schedule, Resolve, and more
- Managed under Settings → Ticket Types and Settings → Workflows, with queues
04 — CRM
CRM built for service
Accounts and contacts sit alongside your tickets. Each client account carries its own SLA configuration that tickets automatically inherit.
- Per-account SLA config: enable, first-response minutes, resolve minutes
- Contacts created automatically from inbound mail
- Unknown senders land in an “Unmatched senders” account for triage
05 — Ops
SLA & operations dashboard
Per-client SLA evaluation keeps response and resolution honest, and the operations dashboard turns it into a live picture of the team.
- Response clock = first outbound email; resolution clock clears on reopen
- Response and resolution KPIs whenever a client has SLA enabled
- Recent activity and a 7-day SLA chart on the /org home dashboard
06 — Email
Outlook / Microsoft 365 email
Connect real mailboxes through Microsoft Graph, or run the mock adapter for demos. Inbound mail creates and matches tickets; replies go out through Graph.
- Two adapters: mock (no credentials) and Graph (real Outlook via Entra admin consent)
- Ingest by polling or Graph webhook when the app URL is public HTTPS
- Replies via Graph reply → sendMail; send failures surface on the ticket, not as a 500
07 — Auth
Auth & SSO, hardened
Credentials login and Microsoft SSO via SAML 2.0, with security hardening throughout. Nyrix never auto-creates accounts from SSO.
- Microsoft SSO via SAML: SP-initiated login → ACS callback → short-lived single-use token
- Agent (user) management under Settings → Agents
- Rate-limited login, required AUTH_SECRET in prod, CSP and anti-clickjacking headers, same-origin redirects
08 — Stack
Self-hosted, modern stack
Run Nyrix on your own terms. A modern TypeScript stack your engineers will recognize, with a database that grows with you.
- Next.js 16, React 19, Tailwind v4, and shadcn (vendored Circle primitives)
- Prisma with SQLite for a fast start, or Postgres/Neon on Vercel
- Everything lives under /org — one app, fully yours
Want your process working like this?
Nyrix is one shape this takes. Tell us how your team works today and we’ll figure out yours.