A full conjunction-assessment pipeline, delivered as software.
No new hardware, just software taking in available data and putting out a clear and understandable plan for the team to review.
One catalog, sharpened by your own ephemerides
Photon downloads the public CelesTrak catalog (GP/OMM) about every 2 hours — CelesTrak publishes no faster — and keeps the history of the element sets it has downloaded. When you attach your own CCSDS OEM ephemeris to a fleet satellite, Photon positions that satellite from your ephemeris instead of its public elements for as long as the ephemeris covers.
Prioritized by estimated probability, not just distance
Public element sets come without a covariance, so Photon models one: it estimates how far off an element set is likely to be from its age, using how much successive published sets of the same object disagree, refitted daily per orbit class and object type from the catalog archive. That modelled covariance feeds a two-dimensional short-encounter collision probability for each close approach — an estimated Pc, labelled with its basis, used to rank what deserves attention. It is not the probability a tracking network computes. Optional ML re-ranks alerts by what your team actually acts on and flags satellites whose orbits look out of family.
The right warning, where the team already lives
Deduplicated, severity-ranked alerts arrive by Slack, email, webhook or API — with the full encounter context attached, prioritized using configurable risk thresholds.
Low-Δv avoidance, simulated before you decide
Photon generates candidate avoidance burns — impulsive, on public orbit data, under stated modelling assumptions — looks for low-Δv ones, simulates their effects, and hands them over for operator review. They are candidates, not guaranteed-minimum or globally optimal solutions, and Photon never commands a spacecraft: your flight dynamics team verifies and decides.
How often it runs, and how sure it is
Photon is a screening tool, not a live feed. Server-side screening is a scheduled batch over public data, and what it reports is an estimate built on a modelled uncertainty. Here are the numbers, and the limits that come with them.
The server re-screens every licensed organization's saved fleets on this schedule, and an alert can only be as fresh as the last cycle. It is not continuous.
Public element sets lose accuracy with age, so a Pc for an approach days away is usually diluted and says little; the nearer the approach, the more it means.
Each run keeps a satellite's closest approaches under this distance — at most 25 per satellite — and an organization's rule decides which of them alert.
The public catalog is re-downloaded about this often, and an object's own element set may be older still. A screen uses what was last published, not where the object is this second.
An estimate is not an operator's data
Public element sets carry no uncertainty of their own, so Photon's covariance, and the Pc computed from it, are modelled. The numbers your own tracking and your conjunction messages carry are a different kind of thing.
| What Photon estimates | Authoritative operator data | |
|---|---|---|
| Orbit source | Public element sets, propagated with SGP4. | Your own ephemeris (CCSDS OEM) for your satellites; a tracking network's orbit determination in a CDM. |
| Uncertainty | Modelled from element-set age and the archive's history, refitted daily. Labelled low confidence until the archive holds 14 days of history. | Measured and carried in the data itself: the covariance in your OEM or in a CDM. |
| Collision probability | An estimated Pc by the 2-D short-encounter method, shown with its basis. Slow approaches get none, and the miss distance decides their severity. | The Pc in a CDM comes from the tracking network. Photon shows it unaltered, next to its own screen of the same pair. |
| Use it to | Decide what to look at first. | Decide what to do — and check with your tracking provider and flight dynamics before you act. |
- Not real time. Server screening runs every 2 hours on data no fresher than the last catalog download.
- No guarantee of detection. It screens the public catalog, about 20,000 objects. Anything not in it, and debris too small to track, is invisible to it, and a pair that is not flagged is not thereby safe.
- Not the true collision probability. It is an estimate for ranking, built on a modelled covariance. Where a conjunction message exists, that message's figures are the ones to weigh.
- Not guaranteed-optimal maneuvers. Candidates are impulsive burns on public data, found by searching a feasible set under stated assumptions. Finite burns, thrust limits and attitude constraints are not modelled, and the re-screen covers the recommended option only. Hand them to your flight dynamics team; Photon never commands a spacecraft.
Where your data goes
Photon is a desktop app with a cloud account, so some work happens on your computer and some on our server. This is which, and what leaves your machine. The privacy page covers the rest, including how long things are kept.
- Orbit propagation, the 3D viewer and the Time Machine.
- Conjunction screening and Pc estimates against the catalog loaded on your machine.
- Maneuver candidate design and the Drag Analyzer.
- The optional learned alert triage, trained only on your own feedback.
- The CDMs and OEM files you import (see below).
- Your account: email, a hash of your password, your plan, and your devices (a random install ID, a name, the platform).
- Fleets you save to your organization: satellite names, NORAD IDs, element sets, shapes and colours.
- Any ephemeris you attach to a fleet satellite.
- The text of an AI request when you use an AI feature. It is forwarded to an AI provider and not stored by us.
- Feedback and crash reports, only when you press Send; and usage counts (which feature, when, success or refusal — never the content).
- Signing in, and the periodic licence check.
- AI briefings and explanations.
- Fleet sync between machines and teammates.
- Server-side screening and alerts. These run on our server on their 2-hour cycle whether or not the app is open.
- Update checks, and refreshing the catalog from CelesTrak; the copy already on your machine works offline.
- CDMs you import (File → Conjunction messages) stay on your computer. They are never uploaded and never enter an AI request. Photon shows each CDM's own numbers unaltered beside its own screen of the same pair, and drops a CDM a day after its closest approach. Photon does not fetch CDMs from any network.
- An OEM imported through File → Operator ephemerides also stays on your computer.
- An OEM attached to a fleet satellite in the Constellation Manager is different: it is converted to a table of states and uploaded, is shared with everyone who can see that fleet, and is used by your organization's server-side screening. It is private to your organization, and anyone with edit access to the fleet can remove it.
Built for real orbits, honest about the rest
A Rust core does the number-crunching; Python runs the AI and the 3D console. Everything is screening-level — Photon proposes, an operator decides.
Your fleet is screened against the public CelesTrak catalog — payloads, rocket bodies and tracked debris. Objects missing from it are not screened.
Propagation and screening run on the operator's machine. Once you are signed in they don't need a live connection.
Runs on public tracking data and feeds already in place. Nothing to install in orbit.
Every AI generation is logged locally — metadata by default, full prompts only if you switch that on — so you can see when and how AI was used. Its wording is conservative and screening-level.
See Photon on your own fleet
Bring your catalog IDs and we'll walk through a screen of your own fleet with you.
Ask for a walk-through