Open source · MIT
Build on the TAKIP platform
TAKIP aggregates aviation, maritime, seismic, conflict, cyber, and OSINT feeds onto a single GPU-rendered map — and exposes every one of them as a plain HTTP endpoint. This is the same API the dashboard runs on. There is no separate, privileged internal tier.
- Endpoints
- 112
- Live feeds
- 20+
- Keys required
- 0
Overview
Every data point on the map is rendered through WebGL via MapLibre GL, which is what lets the interface hold thousands of concurrent entities at 60fps. The application is a Next.js app: the map and HUD run in the browser, and each live feed is normalised by a route under /api before it reaches the client.
That boundary is deliberate. Upstream sources disagree about formats, rate limits, and CORS policy, so the API layer absorbs those differences and hands back consistent JSON.
Quick start
Every feed is a plain GET returning JSON and needs no authentication — paste any of these into a terminal.
curl -s https://takip.dev/api/flights | jq '.commercial_flights | length'If you only need magnitudes rather than geometry, /api/stats is the right endpoint to poll — it collapses the heavy feeds into a handful of counters.
curl -s https://takip.dev/api/stats
# { "stats": { "flights": 9241, "sats": 2043, "cctv": 2117,
# "weather": 58, "nuclear": 191, "incidents": 412 },
# "timestamp": "2026-07-29T12:00:00Z" }The OSINT lookups each take one subject, so they compose cleanly in a pipeline. They need an account, so send an API key:
curl -s -H "Authorization: Bearer $YOUR_API_KEY" "https://takip.dev/api/osint/certs?domain=example.com" | jq -r '.subdomains[]'The same key opens the accounts API (/api/v1, documented at /api/v1/docs) and replay data (/api/replay). Without one, most of their endpoints answer 401 api_key_required; /api/v1/key-policy lists the ones open to everyone. A free account comes with a key.
Self-hosting
The map needs Node 20+ and no database. Accounts, and with them the OSINT tools, come from the accounts API in apps/api, which npm run dev starts beside the web app on port 4100. A local instance is three commands:
git clone https://github.com/batuhantoker/takip.git
cd takip
npm install
npm run dev # http://localhost:3000For a production build, or to run the checks:
npm run build && npm start
npm run lint
npm test # vitest
npm run test:live # includes tests that hit live upstream feedsA Dockerfile and docker-compose.yml ship with the repository. The container always listens on port 3000 internally; TAKIP_PORT controls the host port it is published on.
cp .env.example .env
docker compose up -dConfiguration
Copy .env.example to .env. Read that file before filling anything in — most of the keys it lists are reserved for future sources and are not consumed by the current code.
Read by the application
Optional — higher limits or deeper results
OPENSKY_CLIENT_ID and OPENSKY_CLIENT_SECRET lift OpenSky’s anonymous budget of 400 credits a day. ETHERSCAN_API_KEY and HELIUS_API_KEY deepen Ethereum and Solana wallet lookups. FIRMS_API_KEY and N2YO_API_KEY are not read: the keyless feeds serve those layers.
openssl rand -hex 32. Never commit a populated .env — only .env.example belongs in version control.Interface guide
The map fills the viewport and every control floats above it. Panels are toggles rather than destinations, so you can build up exactly the picture you need and drop the rest.
TI & MCP
TI (Takip AI) is the AI in TAKIP, on your own model key, and it works two ways. Assist is a conversation (press T): ask in words, typed or spoken, and TI works the map for you. It flies to the place you name, switches the layers on, searches what is live (flights, military aircraft, ships, ports and chokepoints, earthquakes, fires, weather, disaster alerts, news, cameras, satellites), marks what it finds in cyan with the area it searched, and lists it in cards you can click through. It reads the markets, opens panels, and starts forecasts. Each step shows what it did as it does it; choose Navigate, Research or Forecast to steer it, or leave it on Auto.
Forecast is TAKIP's prediction engine. Ask it a question and it researches it, builds a world model (the actors, where they are, how they relate), and casts the actors who decide the outcome as agents, each with what it wants, the levers it can pull and its red lines. Then it plays them against each other over simulated time, in dated periods from today to the question's horizon, in several parallel worlds: each period every actor decides its move from what has happened in its world so far, and a world engine turns the moves into dated events, the occasional surprise, and where the question now stands. A report agent then writes the prediction: how it most likely unfolds, date by date, what each actor does, how each world ended, and a calibrated figure with its drivers, scenarios, signposts and dissent. The figure takes the shape the question asks for: a probability for a yes-or-no question, a share for each outcome when it asks which of several will happen, and an estimate with an 80% range when it asks how much. While it runs, it draws itself on the globe as arcs through the sky; every arc and point can be clicked to open exactly that piece of the research, and the camera follows the run until you take it.
From code, start a run, then follow it over Server-Sent Events or wait for it:
# Start: answers 202 with the run id, a watch link and a run token
curl -s -X POST https://takip.dev/api/ai/runs \
-H "Content-Type: application/json" \
-H "X-AI-Provider: openai" \
-H "X-AI-Key: $OPENAI_API_KEY" \
-d '{"question": "Will the Fed cut rates at its next meeting?", "depth": "quick"}'
# Wait up to 55 s for the prediction (repeat until status is "done")
curl -s "https://takip.dev/api/ai/runs/RUN_ID?wait=55"
# Or watch it happen
curl -N https://takip.dev/api/ai/runs/RUN_ID/eventsThe same engine is an MCP server at https://takip.dev/api/mcp (Streamable HTTP). Give an agent the tools ai_predict, ai_get_run, ai_ask, ai_inject, ai_cancel and ai_info, plus takip_world_brief and takip_markets and takip_trending, which are free and need no key. The model key is set once on the connection, as headers, so it never appears in the agent's conversation.
# ~/.hermes/config.yaml
mcp_servers:
takip:
url: "https://takip.dev/api/mcp"
headers:
X-AI-Provider: "anthropic"
X-AI-Key: "sk-ant-..."
X-AI-Model: "claude-haiku-4-5-20251001"
timeout: 300ai_predict waits for it when the client accepts a streamed response, sending progress as each phase and period completes. Over plain JSON it waits about 80 seconds, then returns the run id to poll with ai_get_run and wait_seconds.The method follows MiroFish, the open-source swarm-intelligence engine: seed a parallel world from real material, populate it with agents, let them interact while you inject variables, then hand the simulation to a report agent. TAKIP rebuilds that method natively for its own feeds and globe; no MiroFish code is used. A simulation, not a guarantee.
Keyboard shortcuts
Press ? at any time inside the application to bring up this list.
In these docs, ⌘K (or /) opens search from anywhere on the page.
Conventions
All routes live under /api on whatever origin serves the application. Reads are GET, writes are POST with a JSON body. Nothing requires authentication except /api/sdk/ingest, /api/github-webhook, and the AI endpoints when they run on the server's Gemini key, which is for Pro plans. TI runs on a model key you bring, sent in the X-AI-Key header; Authorization is reserved for TAKIP API keys.
/api/osint/sweep generate traffic against the targets you name. Only point them at infrastructure you own or have written authorisation to test. The remaining OSINT routes are passive and query third-party datasets rather than the subject itself.System status
Liveness and aggregate counters. Safe to poll from monitoring. The accounts API behind /api/v1 (keys, usage, workspaces, ArcGIS, the entity graph) documents itself at /api/v1/docs.
Aviation and space weather
Aircraft, airports, aviation weather, orbital objects, and heliophysics.
Space
Launches, the spacecraft fleet, the solar system and the Sun, as the space view reads them. All keyless.
Earth and environment
Seismic, fire, weather, disaster, radiation, health, and orbital-imagery feeds.
Geopolitical
Conflict zones, frontlines, event streams, air-raid alerts, travel advice, and country-level risk.
Media and markets
News aggregation, live broadcast streams, and financial instruments.
Surveillance and infrastructure
Camera networks, fixed infrastructure, reference datasets, and stream and feature proxies.
Roads, rail and sea
Measured road traffic, live public transport, shipping, chokepoints, and maritime warnings.
Internet and services
Connectivity outages, attack origins, and the status pages of major vendors.
Cyber threats
Vulnerability, attack, malware, and on-chain threat telemetry.
OSINT tools
The lookup tools behind the RECON panel — keyless, with no scanner backend to run. Every route takes a single subject and returns a normalised result, so they compose well in scripts. Each needs an account: call it signed in, or with an API key, whose calls count against its daily quota; without one it answers 401 `sign_in_required`. Limits are per account: 20 breach lookups (leaks, Hudson Rock) an hour, 30 people searches (phone, email, GitHub, username, profile search) an hour, 30 scans an hour (port scan, subnet sweep, vulnerabilities; these, TLS and the username sweep reach the target from TAKIP’s server, so they need a plan with `recon.scan`, Pro, and answer 403 `entitlement_required` otherwise), 30 CVE lookups a minute, and 15 of the other lookups a minute.
Recon scanners
Active and web-facing probes the web tier runs itself, keylessly. Each needs an account, like the rest of the OSINT toolkit. Port scans and vulnerability checks share the 30-an-hour scan allowance with the subnet sweep; TLS, headers, tech and subdomains count as ordinary lookups. Targets are validated against private and reserved ranges before any connection.
Entity graph
Link analysis over entities surfaced elsewhere in the platform.
AI analysis
Gemini-backed correlation over feed data you supply. All three are POST. Analyze and briefing allow 5 requests a minute per IP, overview 20. The server’s own Gemini key is for Pro plans; analyze and briefing run free for anyone on a Gemini key sent in X-Gemini-Key.
TI, Takip AI (assist and prediction)
TI Assist, a model on your own key that works the map in conversation, and a prediction engine on live TAKIP intelligence: it casts the actors who decide a question, plays them against each other over dated periods in several parallel worlds, and a report agent writes the predicted path with a calibrated figure. Your model key is sent in headers and never stored. Also served as an MCP server at /api/mcp; see TI guide.
Polybolos SDK
Push entities from an external platform into the Common Operating Picture, and stream the merged picture back out.
Webhooks
Inbound hooks from external services.