Built for multi-tenant SaaS from day one.
Tenants, projects, memberships and roles are first-class. Every request is tenant-scoped, with row-level RBAC and audit trails so you can safely host multiple customers on the same cluster.
RustGrid is a developer-first ticketing backend: multi-tenant RBAC, HTTP + gRPC, idempotent write flows, and observability built in. Ship tickets, comments, projects and sprints without building Jira from scratch.
// HTTP: create a ticket POST /api/v1/projects/DEMO/tickets Authorization: Bearer <token> X-Tenant-Id: acme { "title": "Customer cannot log in", "description": "Login fails with 500 after password reset.", "type": "bug", "priority": "high" } // Rust: query via gRPC let mut client = TicketsClient::new(channel); let resp = client .list_tickets(ListTicketsRequest { tenant_id: "acme".into(), project_key: "DEMO".into(), page: 1, size: 25, ..Default::default() }) .await?;
RustGrid gives you a hardened, opinionated ticketing core: tenants, projects, tickets, comments, memberships and roles — exposed as a clean HTTP and gRPC surface you can plug into any product.
Tenants, projects, memberships and roles are first-class. Every request is tenant-scoped, with row-level RBAC and audit trails so you can safely host multiple customers on the same cluster.
Consume RustGrid from any frontend via REST, or speak gRPC directly from your services. The same domain model, two transport layers, one consistent contract.
Built-in idempotency keys, ETags and guarded updates. RustGrid defends your write paths so your product can handle retries, timeouts and race conditions without duplicating tickets.
Structured logs, request IDs, per-query timings and Prometheus metrics. RustGrid is ready to plug into your dashboards and on-call rotation on day one.
Token-based auth with tenant-bound memberships and role-based permissions for tickets, projects and comments. Owners, agents, auditors and bots each get exactly what they need.
A modern Rust stack built on Axum, Tonic and SQLx. Memory-safe, async-first and engineered to survive real-world traffic spikes without falling over.
RustGrid sits in your backend as a dedicated ticketing engine. Your product owns the UX — RustGrid takes care of tenants, queues, workflows and data integrity.
Your React, Vue or native clients never have to know RustGrid exists. They hit your API, your auth, your brand — and your backend delegates ticketing concerns to RustGrid via HTTP or gRPC.
RustGrid is API-first. Everything you can do in the UI can be done over HTTP or gRPC with typed contracts. Start with tickets, plug in projects, then layer on sprints and relations.
# Create a ticket via HTTP curl -X POST https://api.rustgrid.com/api/v1/projects/DEMO/tickets \ -H "Authorization: Bearer <token>" \ -H "X-Tenant-Id: acme" \ -H "Content-Type: application/json" \ -d '{ "title": "Payments failing on Safari", "description": "Customer reports 3D Secure loop.", "type": "bug", "priority": "critical" }' // List tickets from your frontend const res = await fetch("/api/tickets?tenant=acme&project=DEMO"); const data = await res.json();
use rustgrid_proto::tickets::v1::{ tickets_client::TicketsClient, ListTicketsRequest }; async fn list_project_tickets() -> Result<(), Box<dyn std::error::Error>> { let channel = tonic::transport::Channel::from_static( "https://grpc.rustgrid.com", ) .connect() .await?; let mut client = TicketsClient::new(channel); let resp = client .list_tickets(ListTicketsRequest { tenant_id: "acme".into(), project_key: "DEMO".into(), page: 1, size: 20, ..Default::default() }) .await?; println!("tickets = {:?}", resp.into_inner().items); Ok(()) }
RustGrid is for teams who need serious ticketing and workflow primitives but don’t want to ship Yet Another SaaS silo. You keep your product; RustGrid powers the queues.
Add a “Contact support” surface in your app that creates tickets in RustGrid. Let your agents work in a custom backoffice while customers see status updates, SLAs and comments right where they are.
Legal, finance, onboarding, trust & safety – model them all as projects and queues in RustGrid and orchestrate multi-tenant workflows without another SaaS contract.
If you’re a platform or marketplace, use RustGrid to give each customer their own space for tickets, projects and comments under your brand, domain and UX.
During the private beta, RustGrid is free for early adopters. When we launch publicly, pricing will stay simple and usage-based — aligned with the value your product gets from reliable ticketing.
No per-seat tax. No dark patterns. RustGrid will be priced on API usage and tenants, so you can prototype, test and ship without asking for a budget approval every time you add a teammate.
A few clarifications before you plug RustGrid into your stack. If you need something specific, use the waitlist form and mention your use case.
Tell us a bit about your stack and use case and we’ll reach out with early access details when the private beta opens.