Pivot
Pivot is a high-performance real time analytics database on open data formats.
Konsol peta CCTV publik Indonesia dengan analitik lalu lintas AI yang berjalan di browser.
Translation pending
DataJavaScript · CSSGitHub @iyangdevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Traffic-CCTV console: national BPJT toll cameras, BTS layer, in-browser AI vision (COCO-SSD)
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A map-based public-space monitoring console in a tactical SOC style, with a real in-browser AI vision engine running over public CCTV points.
Inspired by the "intelligence console" aesthetic from the reference clip: dark HUD, satellite map, live event feed, timeline. Built as a front-end you can run and extend.
mobilenet_v2 base) runs in the browser on:
hls.js and
analyzed frame-by-frame (the default when a node has a stream). Eight
verified-live cameras are pinned as presets; paste any .m3u8 URL to
analyze your own.Detections are generic COCO traffic classes (car, truck, bus,
motorcycle, bicycle, person). Large boxy vehicles that COCO mislabels as
train from an overhead toll angle are folded back into truck.
Camera points and HLS stream URLs come from BPJT (Badan Pengatur Jalan Tol, Kementerian PU) — the toll-road regulator's public camera registry at https://bpjt.pu.go.id/cctv/, which publishes operator, road, KM marker, coordinates and an HLS URL per camera for public traffic viewing.
js/cctv-data.js is auto-generated — don't hand-edit it. Stream IDs rotate,
so regenerate when cameras stop resolving:
python3 tools/update_cctv.py # all Indonesian toll cameras
python3 tools/update_cctv.py --bbox -6.4,106.68,-6.08,107.02 # one area only
Each camera is tagged with its city from a metro bounding-box table in the tool.
The featured presets in FEATURED_URLS (Jakarta, Surabaya, Sumatra) were each
verified live, H.264, and CORS-open down to the segment. Jasa Marga's jmlive
host (which serves Bandung, Semarang and others) is frequently down — those
cameras still plot as markers but their live playback falls back to the
simulated feed until the host recovers.
City-street CCTV (js/city-cctv-data.js) comes from individual city
portals, since there is no national registry for ATCS/Dishub cameras.
tools/update_city_cctv.py has one small adapter per city. A city is imported
only if its portal is public (no login) and its HLS streams are CORS-open;
only road/intersection cameras are kept (no parks, rivers, building security or
neighbourhood cameras). Currently: Kota Yogyakarta (cctv.jogjakota.go.id,
~100 ATCS/road cameras). Portals that lock streams to their own site (Bandung
Pelindung), need a login (Semarang) or are down are linked as view-only in the
console's source panel — they are not proxied or worked around.
python3 tools/update_city_cctv.py # refresh city cameras
BTS layer (data/bts.json, with counts in js/bts-data.js) holds the
Indonesian cell towers mapped in OpenStreetMap
(© OpenStreetMap contributors, ODbL), fetched from the public Overpass API by
tools/gen_bts.py. Only each tower's position and operator(s) are kept; other
tags, some of which carry phone numbers, are dropped. Volunteers map these, so
coverage is real but incomplete and uneven. The page loads the file only when
the layer is switched on.
python3 tools/gen_bts.py # refresh from OpenStreetMap (~1-2 min)
This console does generic, anonymous analytics only — object classes like
person, car, bus, truck, motorcycle, bicycle, and aggregate counts.
It intentionally does not implement:
Those features turn a monitoring tool into a targeted-surveillance / stalkerware system, so they are out of scope. Keep deployments to public spaces you are authorized to monitor, and follow local privacy law.
From the repo root:
python3 -m http.server 5173
Then open http://localhost:5173. (A browser is required — the AI model and map tiles load from CDNs, so you need an internet connection on first load.)
It's plain static files with no build step, so any static host works — this
repo is set up for GitHub Pages (.nojekyll makes Pages serve files as-is).
All camera streams are https://, so nothing is blocked as mixed content.
Note: the claude.ai Artifact viewer blocks every cross-origin image and
fetch, so inside an Artifact the map tiles, live HLS streams and model weights
don't load. Live features need a normal static host like this one.
hls.js fetches each segment over fetch/XHR, so a stream only works in the
browser if its server sends Access-Control-Allow-Origin. If it doesn't, the
video may still play but the canvas becomes tainted and
tf.browser.fromPixels() throws — the engine detects this, keeps the picture
up, and shows "detection blocked (CORS-restricted feed)" instead of failing.
The BPJT toll cameras used here send Access-Control-Allow-Origin: *, so both
playback and detection work. For a feed that can't (many city CCTV portals), run
a small reverse proxy / ffmpeg re-stream that adds the CORS header, and point
the console at that instead.
| File | Role |
|---|---|
index.html | Layout, HUD shell, camera modal, HLS controls |
css/styles.css | Tactical SOC theme |
js/cctv-data.js | Auto-generated CCTV node dataset (BPJT), city-tagged |
js/city-cctv-data.js | Auto-generated city-street CCTV (city portals) |
js/bts-data.js, data/bts.json | Auto-generated BTS towers from OpenStreetMap |
js/vision.js | VisionEngine — COCO-SSD + hls.js + webcam/file/sim |
js/app.js | Map, markers, layers, city selector, analytics, modal |
tools/update_cctv.py | Regenerate cctv-data.js from the BPJT registry |
tools/update_city_cctv.py | Regenerate city-cctv-data.js from city portals |
tools/gen_bts.py | Refresh the BTS towers from OpenStreetMap |
For many simultaneous real feeds, move inference off the browser: decode streams on a server/edge box and run a detector (YOLOv8 / RT-DETR via ONNX Runtime or a Triton server), then push detections to this UI over WebSocket. The front-end stays the same; only the stats source changes.
Libraries: Leaflet · TensorFlow.js · COCO-SSD. Imagery © Esri.