diff --git a/website/index.html b/website/index.html index 4acf7d17..e41245cb 100644 --- a/website/index.html +++ b/website/index.html @@ -1,470 +1,473 @@ - + - - + + Velocity · The self-hosted OSINT console you own - - - - - - - - - - + -
- - Release - v1.0.1 · bound the archive's write-ahead log - - - -
- - -
-
- -
-
-

The situation console you own.

-

Self-hosted and keyless. Live aircraft, ships and satellites fused on one globe, with history nobody can paywall.

- -
- AGPL-3.0 - Self-hosted - No API keys -
+
Velocity's globe seen from orbit with live aircraft traffic
+
+
+
Every Movement on Earth
+
One Picture You Own
+
- -
- Thousands of individual live aircraft over the United Kingdom, the North Sea, Germany and Scandinavia on Velocity's globe +
-
-

Flightradar24 keeps 7 days.
MarineTraffic keeps 24 hours.
You keep everything.

-
-
0aircraft, peak snapshot
-
0vessels, same snapshot
-
0satellites in-browser
-
0military bases
-
0MCP tools
-
0tests passing
+
+
+ See All ↗ +
+
+
+
+ +
+
+
+ +
+
+
+
+
+ + +
+
-
Measured on one development box17 July 2026
- -
- - - - - - -
- The launch film · 52 seconds -

Velocity in 52 seconds.

-

Every public feed, the satellite constellation, an aircraft with its recorded track, then the archive rewound. All of it the running console on live data.

-
- -
-
- -
-
- - 0:00 / 0:52 - - - -
-
-
- - -
+
-
-

Every feed on one globe

-

Aircraft, vessels, satellites, hazards and infrastructure land in one 3D view and are correlated on the server, so you stop eyeballing six browser tabs. Core feeds need no account and no API key.

-
+

Flightradar24 keeps 7 days. MarineTraffic keeps 24 hours. You keep everything — every transponder ping, every radar sweep, every satellite pass, every vessel, every aircraft, every signal on Earth — fused into one living picture that never expires, never blinks, and never looks away.

-
- Thousands of individual live aircraft over the United Kingdom, the North Sea, Germany and Scandinavia on Velocity's globe - Live · the North Sea and Baltic, one second of the feed -
- -
+
-
-
- 13,000 -
-

Air

- aircraft on a typical day, from 9,000 -

ADS-B from OpenSky and airplanes.live, including around 140 military aircraft. Busy days peak far higher; the 21,186 above was one measured snapshot.

-
-
Live aircraft over the North Sea
-
-
- 33,000 -
-

Maritime

- vessels on a typical day -

Keyless AIS, MMSI-deduplicated across ShipXplorer, MyShipTracking and Nordic public feeds. 55,086 in the same measured peak.

-
-
Vessel and aircraft density over northern Europe
-
-
- 16,000 -
-

Space

- orbital objects, propagated in-browser -

CelesTrak two-line elements propagated with real SGP4 physics in your browser, not a decorative orbit animation.

-
-
Thousands of orbital tracks around Earth
-
-
- 250 -
-

Hazards

- quake events a day -

Earthquakes, wildfires, storms, volcanic activity and power outages, on the same timeline as the traffic that has to route around them.

-
-
Hazard and traffic layers over the Atlantic
-
-
- 200 -
-

Signals

- jamming cells flagged at a time -

GPS jamming inferred from ADS-B position-accuracy degradation, aggregated into cells you can click and query.

-
-
A selected aircraft and its recorded track
-
-
- 53 -
-

Infrastructure

- country toolkits -

7,183 military bases, 3,804 ports, submarine cables and per-country reference layers, searchable next to the live picture.

-
-
The layer rail: air, sea, space, hazards and infrastructure
-
-
+
The Workspace · Twelve Apps, One Substrate
+
- -
-
-
- The archive +
+
+
Velocity replaying recorded traffic from your own disk
+

History nobody can take back

-

Turn on the archive profile and Velocity records position history to your disk, with a scrubber to rewind any layer to any past moment. No account to close, no tier to cut, no API to sunset.

-
-
-
- - - - - - - - -
TrackerReplayable history, free tierArchive owner
VelocityBounded by your disk, scrubbable to any momentYou
Flightradar247 daysThem
MarineTraffic24 hours, down from 72Them
ADS-B ExchangeFree API tier discontinuedThem
-

Free tiers as of July 2026, each checkable on the vendors' own pricing pages. Live coverage is similar community feeder data everywhere. The paywall is the history.

-
Recording since 2026-07-247,609,574 fixes
-
-
- -
Replay · the last hour, from your own disk
-
+

Turn on the archive profile and Velocity records position history to your disk, with a scrubber to rewind any layer to any past moment. No account to close, no tier to cut, no API to sunset.

+ GET STARTED ON GITHUB
-
- A working container terminal at dusk, containers stacked along the quay +
-

No account. No API key. No paywall between you and your own archive.

-
-
- - -
-
-
-

From sighting to signed report

-

Once a finding matters, it has to survive scrutiny. The evidence locker keeps a chain of custody from first capture to final document.

-
-
-
- Capture -

Freeze a URL, an upload or a live feed slice the moment you see it.

- sha256(capture) -
-
- Custody -

Every capture is hashed into an append-only custody log. Nothing edits history; corrections append.

- custody.log · append-only -
-
- Report -

A case rolls up into a self-contained HTML or PPTX report where every claim carries its provenance.

- report.html · report.pptx -
-
- - -
-
- Model context protocol -

Give your agent real eyes

-

Velocity runs as an MCP server with 46 tools, so an AI agent queries the live feeds instead of guessing from its training cutoff. Everything it returns is labelled as automated output, never sold as insight.

-
-
-
# real tool names, illustrative session
-> query_aircraft(lat=25.1, lon=55.3, radius_nm=150)
-> gps_jamming(detail="short")
-> query_vessels(lat=59.4, lon=24.7, radius_nm=90)
-> track_history(id="aircraft:ae1462")
-# served from your local archive,
-# labelled as automated output
-
-
+
Stated Limits
+

What it will not pretend

+
- -
-
-

Twelve apps, one workspace

-

The globe is the front door. Behind it: entity search, graph analysis, case files, data pipelines and automation over the same live substrate. Six of the twelve below; the README tour walks all of them.

-
-
-
Explorer app: a searchable table of every live entity
ExplorerQuery every live entity like a database.
-
Workflows app: an automation graph of connected blocks
WorkflowsAutomation blocks over live feeds, with real control outputs.
-
Briefs app: generated situation briefs with cited sources
BriefsWatch-officer summaries with cited sources.
-
Foundry app: a dataset transform pipeline
FoundryBring your own datasets, transform, bind to the map.
-
Satellite mode: thousands of orbital tracks around Earth
SatellitesSixteen thousand objects on real orbital physics.
-
Layer rail: air, maritime, space, hazards and infrastructure toggles
LayersAir, sea, space, hazards, signals and 14 infrastructure layers.
+
+
- -
-
-
- Stated limits -

What it will not pretend

-

Trust in a tool like this comes from knowing where its edges are. These are stated in the README and enforced in tests.

-
-
-

Motion is real

Aircraft jump to real received fixes by default. Predicted motion exists, but it is opt-in, analytic and clearly a model, because only 13.5% of velocity fits survive contact with the next fix.

-

Coverage is community feeders

Dense over Europe and North America, thin over oceans and conflict zones. AIS is strongest in Northern Europe. The map shows what receivers hear, and that is stated.

-

Built for one analyst

Derived state like incident lists clears on restart. What you deliberately keep persists: the position archive, case files and the custody log.

-

No hosted demo

Community feeder terms do not allow public redistribution, so there is no demo instance to click. You run it, it is yours. That is the point.

+
+
+
+

Built in the open. Owned by whoever runs it.

+

Velocity · AGPL-3.0-or-later · v1.0.1

+

Thanks to the volunteer feeder communities that make public tracking possible.

+
-
+ - -
-
-

Before you ask

-
-
- Do I need any API keys? -

No. Aircraft, vessels, satellites, earthquakes and the basemap all work keyless out of the box. A few optional layers, like NASA FIRMS wildfires, unlock more with a free key and degrade gracefully without one.

-
-
- What hardware does it want? -

Any machine that runs Docker handles the backend. The 3D globe holds 60 fps with around 15,000 aircraft on the desktop RTX card it was measured on; the satellite layer is the hungriest. There is a 2D mode for modest machines.

-
-
- Is watching this data legal? -

The feeds are public, volunteer-run aggregators of unencrypted broadcasts that aircraft and ships transmit by design. Each upstream's terms and rate limits are listed in the NOTICE file; your instance displays the data locally and never re-serves it publicly, which is also why there is no hosted demo. The disclaimer covers responsible use.

-
-
- Why AGPL-3.0? -

So improvements to a tool about transparency stay transparent. If you run a modified Velocity as a service, you share your changes. Private self-hosted use is unaffected. Some upstream feeds carry their own non-commercial terms, listed in the NOTICE file.

-
-
- How much disk does the archive eat? -

Full-breadth global recording measured around 3 GB an hour on a keyless box, so 48 hours of everything is roughly 150 GB. Out of the box a 2 GB byte cap binds first; raise it, or set ARCHIVE_MODE with a disk budget you choose. The scrubber always shows the actual depth you have, never a promise.

-
-
- How is this different from Flightradar24 with extra steps? -

Live coverage is similar community data. The differences are fusion (ships, satellites, jamming and hazards on the same globe as aircraft), correlation on the server, the evidence locker, the MCP interface, and above all the archive: your replay window is your disk, not a subscription tier.

-
-
+
+
+
+ +
Press ESC to close
-
+
- -
-
-
-
-

Up in four commands

-

Docker Compose brings up the API, the web app and a proxy on port 8080. First data appears within a minute of boot.

- Get started on GitHub -
-
- -
$ git clone https://github.com/AndrewCTF/velocity.git
-$ cd velocity
-$ cp .env.example .env
-$ docker compose up
-# api + web + nginx on :8080
-open http://localhost:8080
-
-
+
+
- + +/* reveal on scroll */ +const io=new IntersectionObserver(es=>es.forEach(en=>{ + if(en.isIntersecting){en.target.classList.add('in');io.unobserve(en.target)} +}),{threshold:.08}); +document.querySelectorAll('.reveal').forEach(el=>io.observe(el)); +if(!('IntersectionObserver' in window)||location.search.includes('all'))document.querySelectorAll('.reveal').forEach(el=>el.classList.add('in')); +