(770) 589-5654 service@computerrepairroswell.com Mon–Sat: 9am – 7pm
White-Label EPP Platform →
No-Fix, No-Fee Guarantee
White-Label Platform · SDK · API

Your brand. Your cloud.
Our protection engine.

A complete Endpoint Protection Platform you can put your own name on — multi-tenant console, cross-platform agent, REST API, and SDKs in five languages. Run it on our cloud, in your own cloud account, or entirely inside an air-gapped network. Nothing your customers see carries our name.

See How It Works
4
Deployment models — shared, dedicated, BYO-cloud, on-prem
5
First-party SDKs, plus plain REST for everything else
3
Agent platforms — Windows, macOS, Linux
Customer tenants under one partner account
Who It's Built For

Three Very Different Buyers, One Platform

An MSP needs margin and multi-tenancy. A business needs its telemetry inside the tools it already runs. A government agency needs the whole thing inside its own boundary. The platform is shaped so none of those three has to compromise for the other two.

MSP

Managed Service Providers

Sell endpoint protection under your own name instead of reselling someone else's logo.

  • Unlimited customer tenants under one partner account
  • Your domain, your logo, your installer, your invoices
  • Per-tenant margin control — you set the retail price
  • PSA and ticketing hooks so detections become billable work
BUSINESS

Businesses & In-House IT

Run protection as internal infrastructure, with the telemetry wired into the tools you already own.

  • One tenant per business unit, site, or subsidiary
  • Full raw telemetry export — no vendor data lock-in
  • SSO via SAML 2.0 or OIDC against your identity provider
  • Stream events straight into your existing SIEM
GOV

Government & Public Sector

Deploy inside your own boundary, including networks that never touch the public internet.

  • Air-gapped and on-premises deployment supported
  • Data residency stays under your control end to end
  • Immutable, exportable audit log of every action taken
  • Control mappings for NIST SP 800-171 and CMMC scoping
Platform Architecture

What Actually Sits Between the Endpoint and Your Console

Five layers. The agent collects and enforces locally, the edge authenticates and normalises, the core detects and decides, and everything above it is a surface you control — your console, your application, your SIEM.

Fig. 1 — End-to-end platform architecture agent → edge → core → your surfaces
ENDPOINTS AGENT EDGE PLATFORM CORE YOUR SURFACES YOUR CLOUD BOUNDARY — shared · dedicated · BYO · on-prem Windows 10 · 11 · Server 2016+ macOS 12+ · Intel & Apple Si Linux Ubuntu · RHEL · Debian Servers & VDI physical · virtual Collector process · file · net Policy engine cached, runs offline Response isolate · kill · quarantine Buffer disk queue · replay mTLS terminator client cert per host Ingest gateway batch · compress AuthN / AuthZ tenant scoping Rate limit per-tenant quota Detection pipeline rules · heuristics · ML Policy service versioned · rollback Telemetry store hot + cold retention Alerting & audit immutable log YOUR BRANDED CONSOLE protect.yourbrand.com Your application via SDK SIEM · PSA · Slack via webhook Reports & billing PDF · CSV · usage API collect mTLS 443 normalise REST · WS signed commands · policy push · agent updates
Reading the diagram: traffic is outbound-only from the endpoint — the agent opens the connection, so no inbound firewall rule or public IP is ever required on a protected host. Everything inside the dashed boundary is what moves when you change deployment model; the agent and your surfaces stay exactly the same.
How It Works

From Empty Tenant to Protected Estate in Six Moves

Every step below is available both in the console and through the API, so you can click through it once to learn it and then automate the whole sequence for every customer after that.

STEP 01

Provision the tenant

One API call creates an isolated customer tenant with its own encryption key, seat limit, data-retention window, and rate budget. Nothing is shared with your other tenants except the code that serves them.

STEP 02

Apply your brand

Push a logo, a palette, and a domain. The console, the login page, every notification email, and every generated report pick it up immediately — and your code-signing certificate goes into the installer pipeline.

STEP 03

Deploy the agent

Download a branded MSI, PKG, DEB, or RPM and ship it through GPO, Intune, Jamf, or the RMM you already run. A scoped enrollment token binds each install to the right tenant and site automatically.

STEP 04

Telemetry starts flowing

The agent batches process, file, network, and inventory events and ships them over mutually authenticated TLS on a regular check-in. If the link drops, events queue on disk and replay in order when it returns.

STEP 05

Detect and decide

The pipeline scores every event against signatures, behavioural rules, and a correlation model, then produces a verdict. The policy assigned to that endpoint decides whether the verdict acts on its own or waits for a human.

STEP 06

Respond and report

Isolate the host, kill the process tree, quarantine the file — then fire a webhook into your PSA so the work becomes a ticket, and roll the month up into a branded report for the customer.

Fig. 2 — Agent lifecycle, enrollment through response outbound-only · check-in driven
AGENT EDGE / INGEST PLATFORM CORE YOUR CONSOLE 01 POST /v1/enroll { token, fingerprint } 02 client cert · agent_id · policy bundle 03 POST /v1/checkin every 60s 04 normalise · tenant-scope · quota 05 evaluate: signature → behaviour → correlation → verdict 06 detection.created — WS push + webhook 07 POST /v1/endpoints/{id}/isolate 08 enqueue signed command 09 GET /v1/poll (next check-in) 10 command: isolate { reason, ttl } 11 POST /v1/result { status, exit_code }
Why it is pull-based: the agent always initiates. Commands wait in a queue until the endpoint asks for them, which means a laptop on hotel Wi-Fi, a machine behind double NAT, and a server in a locked-down VLAN all behave identically — and none of them need an inbound rule. The trade-off is latency bounded by the check-in interval, which is tunable per policy down to a few seconds for high-value hosts.
Tenancy & Isolation

One Partner Account, Any Number of Walled-Off Customers

Tenancy is enforced at the data layer, not in the interface. Every query carries a tenant scope derived from the credential that made the request, and every tenant's data is sealed with its own encryption key — so a bug in a filter cannot become a cross-customer leak.

Fig. 3 — Tenant hierarchy and isolation boundaries partner → tenant → site → endpoint
YOUR PARTNER ACCOUNT API keys · billing · global branding ISOLATED — own key, own scope ISOLATED — own key, own scope ISOLATED — own key, own scope Acme Corp business plan · 250 seats HQ Roswell Warehouse Alpharetta 142 endpoints 63 endpoints City of Roswell gov plan · 1,200 seats City Hall admin network Public Safety CJIS scoped 812 endpoints 304 endpoints Northside Clinic business plan · 90 seats Main clinical VLAN Satellite remote staff 57 endpoints 28 endpoints
What the boundary means in practice: an API key scoped to a tenant physically cannot read another tenant's rows, and a partner-level key must name a tenant in the X-EPP-Tenant header before it can read anything at all. Sites are a grouping and reporting construct inside a tenant — useful for per-location policy and per-location invoicing, but not a security boundary on their own.
Detection Pipeline

How a Raw Event Becomes a Decision

Every event walks the same five stages before anything acts on it. Each stage is inspectable from the API, so when you need to explain a verdict to a customer — or to an auditor — you can show the evidence rather than pointing at a black box.

Fig. 4 — Event evaluation pipeline telemetry → verdict → action
1 · Collect process · file · net registry · auth 2 · Normalise one common schema across all three OSes 3 · Enrich hash reputation · asset criticality · user context 4 · Match signatures · YARA IOC feeds · allowlists 5 · Score behavioural rules sequence correlation VERDICT scored 0–100, policy decides ALLOW logged and retained, no action ALERT queued for analyst review AUTO-RESPOND isolate · kill · quarantine
Tuning it: the thresholds that separate allow, alert, and auto-respond live in the policy, not in the engine — so a domain controller and a developer laptop can sit at opposite ends of the aggressiveness scale under the same tenant. Allowlists are evaluated at stage four, which is why a whitelisted line-of-business tool never reaches the scoring model and never burns analyst time.
White-Label Surface

Everything a Customer Can See Carries Your Name

White-label is not a logo swap on a login page. If your customer can read it, click it, install it, or receive it in their inbox, it belongs to your brand — right down to the name of the service running in Task Manager.

SurfaceWhat you controlAvailable on
Console domain protect.yourbrand.com — your certificate, your DNS All tiers
API domain api.yourbrand.com fronting every REST and webhook route All tiers
Logo & colour Console, login, reports, and emails use your mark and palette All tiers
Agent binary name yourbrand-agent.exe, signed with your code-signing certificate All tiers
Service name The Windows service, launchd job, and systemd unit carry your name All tiers
Installers Branded MSI, PKG, DEB, and RPM generated per tenant on demand All tiers
Notification email Sent from your domain via your SMTP or SES credentials All tiers
PDF reporting Executive and compliance reports with your cover page and footer All tiers
Documentation End-user and admin docs rebuilt under your name and domain Dedicated +
Mobile app iOS and Android console published under your developer account Dedicated +
Deployment Models

Pick Where the Platform Actually Lives

The agent, the API, and the SDKs are identical across all four models. What changes is who owns the infrastructure underneath — and that is a commercial and compliance decision, not a technical one you have to make on day one. Moving between models later is a supported migration.

ModelWhere data livesIsolationOperated byStand-upBest fit
Shared Cloud Multi-tenant Our cloud, US regions Logical — per-tenant encryption keys and row-level scoping We run it Same day MSPs launching a protection line without infrastructure cost
Dedicated Cloud Single-tenant Isolated VPC, region of your choice Dedicated database and compute per partner We run it 3–5 days Larger MSPs and regulated businesses needing hard isolation
Bring Your Own Cloud You host Your AWS, Azure, or GCP account Your infrastructure, your network boundary You run it, we support it 1–2 weeks Enterprises with strict data residency requirements
On-Premises Air-gap capable Your datacenter, offline if required Physically separated, no outbound dependency You run it, we support it 2–4 weeks Government, defense, OT, and classified networks
Air-gapped note In a fully disconnected deployment, signature and rule updates arrive as a signed bundle you transfer on removable media and import through the console or the CLI. Everything else — detection, response, reporting, the API, and the SDKs — runs with no outbound connectivity at all.
The SDK

Drive the Whole Platform From Your Own Code

Five first-party SDKs wrap the same REST API, with typed models, automatic retry with exponential backoff, cursor pagination handled for you, and streaming helpers for detections. Anything the SDKs do not cover is a plain HTTPS call away.

npm install @yourbrand/epp-sdk
import { EppClient } from '@yourbrand/epp-sdk';

const epp = new EppClient({
  baseUrl: 'https://api.yourbrand.com/v1',
  apiKey:  process.env.EPP_API_KEY,   // sk_live_...
});

// 1. Provision a customer tenant, already branded.
const tenant = await epp.tenants.create({
  name: 'Acme Corp',
  plan: 'business',
  seatLimit: 250,
  branding: { logoUrl: 'https://cdn.yourbrand.com/acme.svg',
              primaryColor: '#ffd200' },
});

// 2. Mint an enrollment token and hand back a signed installer.
const enroll = await epp.enrollment.createToken({
  tenantId:  tenant.id,
  siteId:    'hq-roswell',
  expiresIn: '7d',
});
console.log(enroll.installerUrl.windows);   // branded MSI

// 3. React to detections as they land.
for await (const d of epp.detections.stream({ severity: ['high', 'critical'] })) {
  if (d.verdict === 'malicious') {
    await epp.response.isolate(d.endpointId, { reason: `auto:${d.ruleId}` });
    await epp.tickets.create({ psa: 'halo', subject: d.title, body: d.summary });
  }
}
Built in: every SDK retries idempotent calls automatically, respects the Retry-After header on a 429, refreshes cursors through long result sets, and verifies webhook signatures for you. The streaming helpers hold a websocket open and reconnect on their own, so a long-running automation does not need a babysitter.
The REST API

Every Console Action Has an Endpoint Behind It

There is no private API. The console your operators use is built on exactly the routes below, which means anything a person can do in the interface, your automation can do too — provisioning, policy, response, reporting, and billing data included.

Authentication

GET /v1/endpoints HTTP/1.1
Host: api.yourbrand.com
Authorization: Bearer sk_live_9f1c2e4a7b334d18
X-EPP-Tenant: ten_8fQ2xKpL
Accept: application/json

Partner keys can address any tenant but must name one in X-EPP-Tenant. Tenant keys are permanently bound to a single tenant and ignore that header entirely. Agents never use these keys — they authenticate with a per-host client certificate issued at enrollment.

A detection, as returned

{
  "id": "det_7Kq2mXf9",
  "tenant_id": "ten_8fQ2xKpL",
  "endpoint_id": "ep_3kD9mZ",
  "severity": "critical",
  "verdict": "malicious",
  "score": 94,
  "rule_id": "beh.ransom.canary_write",
  "title": "Rapid encryption pattern on user share",
  "observed_at": "2026-09-20T14:02:11Z",
  "process": {
    "pid": 8812,
    "image": "C:\\Users\\jdoe\\AppData\\x.exe",
    "sha256": "4a7d1ed414474e4033ac29ccb8653d9b",
    "parent": "explorer.exe"
  },
  "actions_taken": ["isolate", "quarantine"],
  "evidence_url": "/v1/detections/det_7Kq2mXf9/evidence"
}
Tenancy & Provisioning
POST /v1/tenants Create a customer tenant with plan, limits, and branding
GET /v1/tenants List tenants under your partner account (cursor paginated)
PATCH /v1/tenants/{id} Update plan, seat limits, retention, or branding
POST /v1/tenants/{id}/suspend Suspend a tenant for non-payment without deleting data
DELETE /v1/tenants/{id} Schedule tenant deletion with a 30-day recovery window
Enrollment & Endpoints
POST /v1/enrollment/tokens Mint a scoped, expiring enrollment token for a site
GET /v1/installers/{os} Fetch a branded signed installer — windows, macos, linux
GET /v1/endpoints List endpoints filtered by tenant, site, tag, or status
GET /v1/endpoints/{id} Full endpoint record: OS, inventory, posture, last check-in
PATCH /v1/endpoints/{id} Set tags, move between sites, or attach notes
DELETE /v1/endpoints/{id} Deregister an endpoint and release its seat
Policy
GET /v1/policies List policies visible to the calling tenant
POST /v1/policies Create a policy from the JSON policy schema
PUT /v1/policies/{id} Replace a policy — versioned, with rollback retained
POST /v1/policies/{id}/assign Assign to a tenant, site, tag, or individual endpoint
Telemetry & Detections
GET /v1/detections Query detections by severity, verdict, rule, or time window
GET /v1/detections/{id} Full detection with process tree and matched rule evidence
POST /v1/detections/{id}/verdict Analyst override — confirm, dismiss, or mark false positive
GET /v1/events Raw normalised telemetry stream for SIEM ingestion
GET /v1/inventory Installed software, running processes, and patch level
Response Actions
POST /v1/endpoints/{id}/isolate Network-isolate the host, leaving the management tunnel up
POST /v1/endpoints/{id}/release Lift isolation and restore normal network access
POST /v1/endpoints/{id}/quarantine Quarantine a file by path or hash into encrypted storage
POST /v1/endpoints/{id}/kill Terminate a process tree by PID or image path
POST /v1/endpoints/{id}/scan Trigger a full, quick, or targeted path scan
POST /v1/commands Queue an arbitrary signed script for an endpoint or group
GET /v1/commands/{id} Poll execution status, exit code, and captured output
Reporting & Audit
GET /v1/reports/posture Security posture rollup by tenant, site, or whole estate
POST /v1/reports/export Generate a branded PDF or CSV export job
GET /v1/audit Immutable audit log of every console and API action
POST /v1/webhooks Register a webhook endpoint and receive its signing secret
ConventionHow it behaves
VersioningMajor version pinned in the path. Additive changes ship in place; breaking changes get a new major, and the previous one is supported for at least twelve months after its successor is announced.
PaginationCursor-based. Pass ?limit=&cursor= and follow next_cursor until it comes back null. Offsets are not supported, because they drift on live data.
IdempotencySend an Idempotency-Key on any POST. Replays inside 24 hours return the original response instead of creating a duplicate.
Rate limitsPer tenant, returned on every response in X-RateLimit-Remaining. A 429 always carries Retry-After; the SDKs honour it without being asked.
ErrorsConsistent JSON envelope with a stable machine-readable code, a human message, and a request_id to quote in support tickets.
TimeEvery timestamp is RFC 3339 in UTC. Relative windows like since=24h are accepted on read endpoints as a convenience.
AuditEvery mutating call is written to the tenant audit log with the calling key, source IP, and resulting object version — including calls made by your own automation.
Webhooks

Push Events Into the Tools You Already Run

Register an endpoint, pick your events, and the platform delivers signed JSON as things happen — into your PSA, your SIEM, a Slack or Teams channel, or a function you wrote yourself.

detection.created

A new detection crossed the alerting threshold

detection.escalated

Severity was raised by correlation or analyst review

endpoint.enrolled

A new endpoint completed enrollment and first check-in

endpoint.offline

An endpoint missed its expected check-in window

endpoint.isolated

Isolation was applied, automatically or by an operator

policy.violated

An endpoint fell out of compliance with its assigned policy

agent.tamper

Agent service stop, file modification, or uninstall attempt

scan.completed

A scheduled or on-demand scan finished, with findings attached

tenant.limit_reached

A tenant hit its seat, retention, or rate limit

Verifying the signature

// Header: X-EPP-Signature: t=1758377731,v1=5d41402a...

import crypto from 'node:crypto';

function verify(rawBody, header, secret) {
  const parts = Object.fromEntries(
    header.split(',').map(kv => kv.split('='))
  );

  // Reject anything older than five minutes.
  const age = Math.floor(Date.now() / 1000) - Number(parts.t);
  if (age > 300) return false;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${parts.t}.${rawBody}`)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(parts.v1)
  );
}

Delivery behaviour

SigningHMAC-SHA256 over timestamp.body, using the secret handed to you once at registration.
Replay guardTimestamp is inside the signed payload. Reject anything older than your tolerance — five minutes is the usual choice.
RetriesExponential backoff over 24 hours on any non-2xx. Deliveries are at-least-once, so make your handler idempotent on event.id.
OrderingNot guaranteed across event types. Each payload carries a monotonic sequence per endpoint if you need to reorder.
FailureAn endpoint failing for 24 hours straight is auto-disabled and an alert lands in your console. Replay is available from the API for 30 days.
EgressDeliveries originate from a published static IP range, so you can allowlist them at your own perimeter.
Security & Compliance

Built to Survive Your Customer's Security Review

Selling protection means answering hard questions about your own platform. These are the controls we can evidence, and the frameworks the architecture is designed to map onto.

Encryption

TLS 1.3 in transit, AES-256 at rest, with a distinct data-encryption key per tenant held in a managed KMS.

Agent identity

Every host gets its own client certificate at enrollment. Certificates are short-lived, rotate automatically, and can be revoked individually.

Tamper resistance

Service stop, binary modification, and uninstall attempts are detected, reported, and optionally blocked outright by policy.

Signed commands

Remote commands are signed server-side and verified by the agent before execution, so a compromised channel cannot inject work.

Least privilege

Role-based access down to the individual action, with separate roles for read-only analysts, responders, and tenant administrators.

SSO & MFA

SAML 2.0 and OIDC against your identity provider, with enforced MFA and SCIM user provisioning available.

Immutable audit

Append-only log of every console and API action, exportable in full and retained independently of the operational data.

Data residency

Region pinning on dedicated cloud, and complete residency control on bring-your-own-cloud and on-premises deployments.

FrameworkHow the platform supports it
NIST SP 800-171Control mapping provided for the endpoint-protection, audit, and incident-response families, so the platform slots into an existing System Security Plan rather than forcing a rewrite.
CMMCOn-premises and air-gapped deployment keeps controlled unclassified information inside your own assessed boundary — the platform never becomes an external service provider in your scope.
CJISPer-site tenancy lets criminal-justice systems sit in their own scoped compartment, with the audit trail and access controls that review expects.
HIPAAA Business Associate Agreement is available on dedicated cloud and above; self-hosted deployments keep protected health information entirely under your covered entity.
SOC 2 / ISO 27001Audit export, access reviews, and change history are designed to produce the evidence these audits ask for without a manual collection exercise.
Read this before you rely on it The table above describes how the architecture is designed to support each framework. It is not a claim that any particular certification, authorisation, or attestation is currently held. If a specific certification is a condition of your purchase, ask us for the current status and the supporting documentation in writing before you sign anything — and we will tell you plainly where we stand.
Getting Started

Roughly Four Weeks From Kickoff to Your Own Live Platform

The sandbox is available on day one, so your developers can start building against the API while the branding and infrastructure work happens in parallel.

Day 0

Kickoff & keys

Partner account created, sandbox tenant issued, API keys and SDK access delivered.

Week 1

Brand & domain

DNS and certificates for your console and API domains, logo and palette applied, code-signing certificate loaded into the installer pipeline.

Week 2

Pilot deployment

Agent rolled out to a pilot group, policies tuned against your real estate, false positives triaged together.

Week 3

Integrations

SSO wired to your IdP, webhooks pointed at your PSA and SIEM, billing and reporting automation connected via the SDK.

Week 4

Production launch

Full rollout, runbook handover, and your team trained on the console and the response workflow.

Commercials

Wholesale Per-Endpoint Pricing — You Set Retail

You are billed on active endpoints, counted daily and trued up monthly. What you charge your own customers is entirely your business, and the platform never shows them a price.

TierEstate sizeWholesaleIncluded
Launch 1 – 250 endpoints $2.90 per endpoint / month Shared cloud, full white-label, standard support
Growth 251 – 2,500 endpoints $2.20 per endpoint / month Shared or dedicated cloud, priority support
Scale 2,501 – 10,000 endpoints $1.60 per endpoint / month Dedicated cloud, named engineer, custom SLA
Gov / Ent. 10,000+ endpoints Custom contract pricing BYO-cloud or on-premises, compliance support
How counting works An endpoint is active if it checked in at least once during the billing day. Decommissioned machines stop counting the day they stop reporting — no seat reclamation ticket required. Sandbox tenants, and endpoints belonging to a suspended tenant, are never billed.
Questions

What Partners Ask Before They Commit

Does our name appear anywhere in the product?
No. On every tier the console, agent binary, service name, installers, emails, and reports carry your brand only. The underlying platform is not named or linked anywhere a customer can see. Attribution requirements, if any, are settled in the partner agreement — not in the product UI.
What operating systems does the agent support?
Windows 10, 11, and Server 2016 onward; macOS 12 and later on both Intel and Apple Silicon; and mainstream Linux distributions including Ubuntu, Debian, RHEL, Rocky, and Alma. The agent is a single static binary per platform with no runtime dependency to install first.
How much does the agent cost the endpoint?
The collector is designed to hold a low steady-state footprint — typically well under one percent CPU at idle with a small resident memory budget. Real numbers depend on your policy aggressiveness and event volume, so the pilot phase exists precisely to measure this on your own hardware before you commit.
What happens when an endpoint loses connectivity?
Policy is cached locally, so protection and local response continue offline. Telemetry is buffered on disk and replayed in order when the link returns. Commands queued while a host was offline are delivered on its next successful check-in, subject to their expiry window.
Can we migrate off the platform later?
Yes, and that is deliberate. Detections, raw telemetry, inventory, policies, and the audit log are all exportable through the API in open formats. There is no proprietary archive format standing between you and your own data.
Who handles tier-one support for our customers?
You do — that is the point of white-label. Your customers contact you, and you escalate to us through a private partner channel that never touches the end customer. Dedicated and enterprise tiers add a named engineer and a contractual response SLA.
Is there a sandbox before we commit?
Every partner account starts with a free sandbox tenant carrying a generous endpoint allowance, the full API surface, and every SDK. It is intentionally unrestricted so you can build and test your integration before signing anything.
How is the API versioned?
The major version is pinned in the path, as in /v1/. Additive changes ship without a version bump; anything breaking lands in a new major version, and the previous one stays supported for a minimum of twelve months after the successor is announced.
Next Step

Let's Scope Your Platform

Tell us your estate size, your compliance constraints, and which deployment model you have in mind. We will come back with an architecture, a wholesale number, and sandbox credentials so your team can start building against the API immediately.

Call (770) 589-5654

Ready to Get Your Computer Fixed?

Same-day diagnostics, transparent pricing, and a 90-day warranty on every repair. Submit your request now or call us directly.

Call (770) 589-5654