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.