Skip to main content
Trust Center

How RotorLab protects the record

RotorLab holds the designs, flight logs, maintenance records and evidence that organizations stand behind with their own name. This page says how that data is protected, what you can check yourself, and what happens if you leave.

Live service health, with 90 days of measured uptime, is at status.rotorlab.app.

At a glance

Eight answers a security reviewer looks for first. Each has its full text under The specifics.

Who gets in

Single sign-on over OpenID Connect. Two-factor enforced for every administrator. Eight built-in roles plus custom ones, and sessions you can see and end.

The specifics ↓

Evidence others can check

Every document carries a code anyone can check at rotorlab.app/verify. The activity log is a hash chain, and a daily digest is timestamped by services we do not control.

The specifics ↓

Your data is yours

Export every record as JSON and CSV at any time. Stored log files come back ungated. When a plan ends, records stay read-only with export for 90 days.

The specifics ↓

Outside services

Every outside party RotorLab can reach is named, with what it receives. A copy run inside your own network reaches none of them.

The specifics ↓

Models know their place

Advisory scores only: nothing gates on a score, and every score names its signals. Training on your records is opt-in, off by default and revocable.

The specifics ↓

Money and operations

Card details go to Stripe, never to us. HTTPS throughout, signed webhooks, scheduled snapshots, and uptime measured by our own heartbeat.

The specifics ↓

Accessibility

Built to WCAG 2.1 level AA. A conformance report on the VPAT 2.4 template for each release, on request. A reported barrier is answered within thirty days.

The specifics ↓

What we do not claim

No ISO 27001 certificate and no FedRAMP or GovRAMP authorization today, and RotorLab has not been assessed against the CJIS Security Policy. Single sign-on is OpenID Connect, not SAML; SCIM 2.0 provisioning is built in. Said here so a checklist gets a straight answer.

The specifics ↓
Evidence

Proof a third party can check

A record only counts if someone outside your organization can check it without taking your word, or ours.

  • A code on every document. Reports, dossiers, binders and invoices carry a verification code; rotorlab.app/verify answers who issued it, when, and for which records, with no account.
  • A hash-chained activity log. Every row carries the hash of the row before it, so a row edited or removed later breaks every hash that follows.
  • Timestamped by someone other than us. Once a day one digest of the day's records goes to an RFC 3161 authority and to OpenTimestamps, which records it in Bitcoin.
The public check of a RotorLab document code: issued through RotorLab, the organization, and what was issued, when and for what period
rotorlab.app/verifyThe public check of a document code, open to anyone the paper is handed to.
The RotorLab Records page: what is recorded, what is on legal hold and what was disposed of
RecordsWhat is kept, for how long, and what is on legal hold: your organization's settings, not ours.
Your data

The strongest promise is the exit

Nothing you store with RotorLab can become leverage over you.

  • Export any time. An administrator downloads the organization's records as one archive of JSON and CSV, raw flight logs included on request. No ticket, no waiting.
  • Your log files come back. Downloading a stored flight log is never gated, metered or tied to a paid feature.
  • Read-only, then kept, then deleted on notice. 90 days read-only with export, 12 months kept, an alert 30 days and a final notice 7 days before deletion. Never automatic while a legal hold stands.

Where RotorLab runs

One service, run by us. Or your own copy, inside your network, for programs that must keep records there.

Hosted at app.rotorlab.app

The service, in the United States

Production runs on Microsoft Azure in Central US (Iowa); the offsite database replica and offsite backups are kept in East US 2 (Virginia). Requests reach it through Microsoft's Azure Front Door edge. Service health is published at status.rotorlab.app from our own heartbeat, gaps included, and any incident we are working on is posted there. The status page is served through the same Azure Front Door edge as the service, so a fault in that edge can take both offline at once.

Live service status →
Inside your organization

Your own copy, in offline mode

A government or defense organization runs its own copy of the release inside its own network, in offline mode: no connection leaves the network, every signed-in page says so, and maps can come from a tile server you run. The organization runs, secures and backs it up itself.

Talk to us about your own instance →

The specifics

Every commitment in full, one section per topic. Open the one your reviewer is asking about.

Who gets in

Single sign-on

Connect Google Workspace, Microsoft Entra, Okta, or any OpenID Connect provider. SSO only signs in addresses under your verified email domain. By default it signs in only people your administrator already added; your administrator can let it add people on their first sign-in, inside your plan's user limit (a person who already has a RotorLab sign-in is sent an invitation instead), and let your provider's groups set their role at each sign-in. A person in none of the mapped groups keeps the role they have, so removing someone from a group does not by itself remove the role. It never makes anybody an administrator.

Enforced two-factor

Every organization administrator needs two-factor, with 14 days to set it up. Organizations can require it for everyone, with a grace period each person gets in full. After the deadline that organization is closed to everything except enrolling and signing out: a real requirement, not a nag banner. The second factor is an authenticator app, or a security key or passkey (WebAuthn), which signs only for this site, so a look-alike page cannot capture and replay it. An organization can accept security keys only, and its rule applies whenever a person enters it, whatever their other organizations allow.

Eight built-in roles, and custom ones

Eight built-in roles including an Auditor made for insurers and customer quality teams and a Billing role for a finance or purchasing contact, who sees and manages the plan, orders, invoices and billing details and buys for the organization, and reaches nothing else, plus custom roles composed from a plain checklist of what each area allows. A role gates both reading and changing, area by area, at the server. An Auditor reads every area except billing and changes nothing. The crew board opens for any role holding Members (view), the Auditor included; public reporting settings and the full organization export stay with your administrators; the whole-organization binder stays with your administrators and any role they give Records custody, and an Auditor's whole-program audit package carries the binder. Records custody places legal holds, sets how long records are kept, and produces packages, release copies and the binder, without the right to file or edit a record. A Pilot sees aircraft, flights, missions, health, maintenance and the operations manual, and nothing else. A Dispatcher runs the dispatch board and the jobs its sorties serve. An Operator-maintainer flies like a Pilot and records the operator's maintenance, while releasing work stays with Maintenance. Every built-in role is walked against the route table in our test suite on every release.

Sessions you can see

Sign-ins use secure, server-side sessions. Your active sessions, with the device, the address it came from, and when each started and expires, are listed on your account page and can be ended one at a time; an organization sets how long a session lives, how long it may sit idle, and whether passwords are refused in favor of its identity provider. Its rules apply each time a person switches into it, not only at sign-in. Recent account activity is shown in plain language.

One sign-in, several organizations

A person who works for more than one organization signs in once and switches between them. The organization they are working in is named on every page, and no organization's page shows another organization's records. An organization's administrators manage only its own membership and are never told which other organizations a person belongs to, or whether an address they invite already uses RotorLab. A person's own flights, hours and currency across their organizations are on their account page for them alone, never for any organization.

Ground stations are accounts

A ground station or server that files flights on your behalf holds its own credential, visible and revocable by your administrator like any other member.

Support access you give

RotorLab support opens your organization's records only while one of your administrators allows it: for 24 hours, 72 hours or 7 days, with a reason, and you can end it at any time. In an emergency, when nobody can give access, support can open your records for at most a day with a written reason, and every administrator of your organization is emailed at that moment. Either way, everything support opens or changes is written to your activity log, which your administrators and Auditors read on every plan. The account support uses requires two-factor authentication and its sessions end after eight hours.

Write-only secrets

Credentials you store (payment provider keys, SSO client secrets, mail passwords, webhook signing secrets) are write-only: saved once, used server-side, never echoed back to any screen, and sealed at rest with the same authenticated encryption that protects flight positions.

Evidence you can hand to someone else

Verifiable documents

Every generated report and invoice carries a verification code. Anyone you hand the paper to can confirm at rotorlab.app/verify that RotorLab issued it, when, and for which records, with no account needed. The code is a keyed hash held by RotorLab, not a digital signature: it proves issue and origin, and we say so on the verify page.

An audit trail in plain language

Sign-ins, permission changes, approvals and security events are logged and readable by your administrators. The log is a hash chain: every row carries the hash of the row before it, so a row edited or removed after the fact breaks every hash that follows. Every export and audit package says whether your organization's chain held when it was made, and gives the recipe to check its rows yourself. Frozen manual revisions and per-serial service-bulletin compliance keep the paperwork trail attributable.

Timestamped by someone other than us

A hash chain proves a record has not changed since we recorded it, but not that we did not change it. So once a day the new records of these kinds, and the newest row of your activity log, which commits to every row before it, are reduced to a single SHA-256 value, and only that value is sent to an independent RFC 3161 time-stamping authority and to OpenTimestamps, which records it in Bitcoin: issued reports and invoices, flight records, stored flight logs, attached documents, job photos, operating area dossiers, audit packages, published operations manual revisions, published public reporting periods, earlier copies of corrected reporting periods, maintenance releases, occurrences, training sign-offs, hazard risk acceptances, completed checklist runs, pilot credentials, authorizations, defects, work orders, declaration of compliance sign-offs, serial conformity inspections and frozen type baselines. Records of other kinds, such as hazards and mission plans, are not anchored one by one. A record corrected after it was anchored is anchored again in the next pass as a new version, and its proof lists the days of the earlier ones. Your audit binder and each audit package carry the proofs of the records in them, how each digest is computed, and a small checker that needs nothing from us. It proves a record existed in that form by that time; it does not prove the record is true. How to check one.

Your data is yours

Export your records, any time

An organization administrator can download the organization's records (aircraft, flights, components and work orders, missions, types and bulletins, manuals, occurrences, jobs, authorizations) as one archive of JSON and CSV files another system can read, raw flight log files included on request. No support ticket, no waiting. The export is growing to carry every module, and each release says what was added. Each person can download, from their own account page, everything the organization they are working in holds about them, with their own sign-in details, and an administrator can export everything about one member, for an access or portability request; neither carries a colleague's own records, and an occurrence a colleague filed about the person's flight is shown in full only to a reader whose role reads occurrence reports.

Your log files come back

A stored flight log is your file. Downloading it back is never gated, metered, or tied to a paid feature, deliberately, so storing evidence with us can never become leverage over you.

When a plan ends

When a plan ends, your organization's records stay read-only with export for 90 days. For the 12 months after that they are kept with no access unless you buy or restore a plan. We send an alert 30 days and a final notice 7 days before the records are deleted. Buying or restoring a plan at any point before deletion restores full access. Records on legal hold are never deleted while the hold stands, and deletion is never automatic. The Terms of Service, section 15, say the same.

When records are deleted

Deleting an organization leaves a certificate of what was deleted, when and why, kept for twelve months. A verification code on a document the organization issued then answers that the document was issued and the organization has since closed. Activity log rows and timestamp entries stay in place with the organization's details taken out, so no other organization's records stop verifying. Each deletion is also written to a signed journal kept apart from the database, so restoring a backup taken before it deletes the organization again. Deleting an organization ends only its own memberships: a person who also belongs to another organization keeps that membership and their sign-in. A photo or document removed from a record is kept, hidden, for the window your organization sets on the Retention page, then deleted with a line in the disposal register.

Who else is called, and what is sent

Every outside party RotorLab can reach, said plainly. A copy run in offline mode calls none of them, except single sign-on, email and webhooks to hosts inside its own network that the people who run it list. An organization can also switch off, for its own members, map imagery and terrain from outside services, weather, place and elevation lookups, address autocomplete, and usage analytics.

Independent timestamps

RFC 3161 timestamping authorities and OpenTimestamps calendars receive one hash a day over the day's records, never a record.

Map imagery and terrain

Esri, USGS The National Map, OpenStreetMap and the AWS elevation tiles are fetched by your browser when a map is drawn. A tile request says which square of the map is wanted. A copy of RotorLab can instead draw its maps and terrain from a tile server its operator runs, so a closed network can still plan.

DJI log reading

Reading a current, encrypted DJI flight record sends its key identifiers to DJI's keychain service (DJI is a company based in China). It happens only for an organization whose administrator switches it on, and never for a signed-out visitor.

Airspace, airport and advisory data

The FAA, the airspace publishers we read and uasvs.org are asked for their published files. uasvs.org publishes the UAS Security Verification Standard, a draft standard that RotorLab helps edit. The request carries nothing about you.

Weather

MET Norway, aviationweather.gov and api.weather.gov receive the coordinates of a planned point or of a flight's place.

Place and elevation lookups

OpenStreetMap Nominatim receives an address you type to place a map, and the USGS elevation service receives a point's coordinates.

Google Analytics

Only where we set it up, and only after you accept analytics cookies: Google's script is not loaded before you do. Our own page counts are cookieless, and the hash that counts a visitor once a day uses a key that is replaced every day.

Address autocomplete

Google Maps Places receives an address as it is typed into a billing or sign-up form, where we have it switched on.

Email

The mail relay this service uses carries the messages it sends: invitations, password resets, notices and replies to support requests.

Card payments

Stripe receives what checkout needs: the plan and the organization's billing details. Card numbers go to Stripe and never to us.

Single sign-on

The identity provider your organization sets takes part in the sign-in exchange OpenID Connect defines.

Webhooks, traffic sources and alert hooks

The addresses your organization enters receive the events and requests each one is set up for, and nothing else.

Sales and account contacts

GoHighLevel, the customer-relationship service RotorLab uses for its own sales and account contacts, is told when someone starts a trial, asks for a quote, writes to sales or asks to talk after a plan has ended; when a plan changes; when a trial is near its end or has ended; when an organization on a trial reaches a size we set; and when an administrator answers our question about talking to our team. It receives the name, email address and phone number of the person who asked or answered or, for an organization, of its first administrator or billing contact, with the organization's billing phone; the organization's name, account number, jurisdiction and profile answers; the plan and the trial's end date; the number of aircraft and members; for a size question, the size, the number reached and where it was asked; what was entered in a quote or sales form; and what happened, when and from which page. It is used only to answer the request and to manage the customer relationship, and the information is not sold. It receives no record, flight, position or file and no sign-in credential, and nothing is sent through it by text message. A copy run in offline mode sends nothing to it.

Regulatory sources

To notice when a rule the Regulation Tracker follows changes, our server asks the Federal Register, eCFR, and the regulators and legislatures that publish those rules for their published pages and feeds. The request names RotorLab and carries nothing about you or your organization.

Models that know their place

RotorLab can annotate records with advisory scores. The rules that govern them are stricter than the models are clever.

A claim with a citation, never a verdict

Every score names the signals that drove it, the model and version that produced it, and the day it was scored. Nothing anywhere gates on a score: it never grounds an aircraft, blocks a flight, or fails a record. The deterministic record underneath is untouched.

Two switches, yours

Want zero model output on anything you hand a regulator? Switch annotations off: off means absent everywhere, exports included. And the models improve only from data organizations volunteer: training inclusion is opt-in, off by default, revocable. Your records never train anything unless you say so.

Provenance, enforced

Every model ships with a manifest naming exactly what data trained it and how it scored against the simpler method it had to beat. A model whose predictions cannot yet trace to real recorded evidence is refused by the software itself: not by policy, by code.

Money and operations

Card details never touch us

Payments run through hosted checkout: card numbers go to the payment provider, never to this server. Procurement buyers can order by purchase order and pay an invoice on net terms instead.

Encrypted in transit

Every connection to the RotorLab application at app.rotorlab.app is encrypted with TLS twice over: from your browser to Microsoft's Azure Front Door edge, and from the edge to our server. The edge decrypts the traffic to route and filter it and encrypts it again, so this is not end-to-end encryption. Inside the server, traffic between its own parts never leaves the machine. Session cookies are locked to HTTPS, and webhooks we send to you are signed so you can verify they came from us.

Backups and status, measured

Production runs on Microsoft Azure in Central US (Iowa); the offsite database replica and offsite backups are kept in East US 2 (Virginia). The database is snapshotted in a transactionally consistent way every 24 hours and the last 7 snapshots are kept, so a snapshot is deleted after about 7 days. Offsite, we keep 30 days of restorable history: the database replica, the copies of stored files and a daily copy in a backup vault each reach back 30 days. The application's backup copies are protected against early deletion, so data deleted from the RotorLab application is gone from every one of its backup copies within 90 days of its deletion. Service health is published at status.rotorlab.app from our own heartbeat, including the gaps, and any incident we are working on is posted there. We run to a 99.5 percent monthly target, and the page shows what our own heartbeat measured. The Terms carry no uptime warranty or service credits.

Accessibility

What a buyer who runs a Section 508 check needs to know.

The target

We build RotorLab to WCAG 2.1 level AA, which takes in the WCAG 2.0 level AA criteria Section 508 incorporates and is the level the Justice Department's ADA Title II rule sets for state and local government. Every page declares its language and has a main landmark, every page with the navigation bar has a skip link to its main content, form labels are tied to their fields, and every PDF RotorLab issues is tagged with its language, title and reading order.

Our conformance report

We keep an accessibility conformance report on the VPAT 2.4 template, Section 508 and WCAG edition, for each release, and it says where we fall short as well as where we meet a criterion. Ask for the current one through Support.

Report a barrier

Something you cannot reach with a keyboard, a screen reader or magnification: tell us through Support, choosing Accessibility. We answer a reported barrier within thirty days.

What we do not claim

Said plainly, so a procurement checklist gets a straight answer.

Certifications

No ISO 27001 certificate and no FedRAMP or GovRAMP (formerly StateRAMP) authorization today, and RotorLab has not been assessed against the CJIS Security Policy. The controls on this page are ours to describe, and many can be seen working in the product; a formal attestation will be announced here when it exists, with its scope, not before. Our answers to a security questionnaire are on the buying documents page.

Identity protocols

Single sign-on is OpenID Connect. SAML is not offered. SCIM 2.0 provisioning is built in: with a token your administrator issues, your directory adds members whose addresses are under your verified email domain (a person who already has a RotorLab sign-in is invited instead), updates them, sets their role through the same group-to-role map as single sign-on, and deactivates them, which ends their sessions and revokes their personal API keys here at once and keeps the records they made. It never makes anyone an administrator, never deactivates your last active administrator and never changes a member's email address. Members can also be invited, singly or from a pasted list, or added on their first SSO sign-in where the organization allows it, and an identity provider that disables a person ends their access to that organization here on the next re-check, which an organization sets and defaults to a day. A PIV or CAC card is used through your own identity provider, not read by RotorLab directly. Where an organization requires SSO, its members, administrators included, cannot enter it with a password, and a person's API key works only within the re-check period after their last SSO sign-in. The platform operator's own account is not bound by an organization's rule, so a locked-out organization can still be helped.

Where it runs

RotorLab is operated by us as one service. A government or defense organization that must keep its records inside its own network runs its own copy of the release there, in offline mode: that copy makes no connection outside the network, so it has no independent timestamps, map imagery, DJI log reading, weather or airspace downloads or card payments, every signed-in page says so, and the organization runs, secures and backs it up itself. Its maps and terrain can come from a tile server inside the same network, and its single sign-on, email and webhooks can reach the hosts inside that network its operator lists. Uptime of our service is published from our own heartbeat at status.rotorlab.app. Demonstration organizations used for sales demonstrations run in the production service. Their records are invented; the only real personal details in them are the sign-ins of the people invited to use them.

Put the questions to us.

Read our security questionnaire and agreements on the buying documents page, or send your own and a person answers by email. A security report can also go to security@rotorlab.app. Where your organization has signed an order form, its support terms, such as hours and response targets, are set there.