Getting Started
This guide takes you from clone to a working local setup.
Only want ObservANT? It comes as a package (.deb, AppImage, flatpak, Windows MSI): take
one from a web.yml run's artifacts (GitHub sign-in needed) or build it with one script,
README.
1) Prerequisites
Or skip them: every Linux CI lane runs in the family image
ghcr.io/kataglyphis/kataglyphis_beschleuniger:latest, which carries Flutter, Rust,
GStreamer and ONNX Runtime (the Windows lanes use its :winamd64 twin). AGENTS.md § 5, The Dart
gate in 23 seconds, runs the tests in it with nothing installed on the host. The clone
below works without a GitHub account: every URL is HTTPS.
On the host:
- Flutter SDK and Dart in
PATH - Rust toolchain (
rustup,cargo) - Docker (optional but recommended for reproducible setup); on Windows install
Stevedore and use its bundled
docker.exewith--isolation processfor builds — see Platforms and ANTfrastructure - GStreamer runtime and tools (
gst-launch-1.0)
Verify your tooling
flutter --version
dart --version
cargo --version
gst-launch-1.0 --version
2) Clone the repository
git clone --recurse-submodules --branch develop https://github.com/Kataglyphis/OmniAccelerANT.git
cd OmniAccelerANT
If you cloned without submodules:
git submodule update --init --recursive
3) Optional: camera checks on Linux
List available camera devices:
for dev in /dev/video*; do
echo "Testing $dev"
gst-launch-1.0 -q v4l2src device="$dev" num-buffers=1 ! fakesink && echo " delivers frames"
done
A Raspberry Pi camera does not show up this way; rpicam-hello --list-cameras lists it.
Inspect resolutions/framerates:
sudo apt update
sudo apt install -y v4l-utils
v4l2-ctl --device=/dev/video0 --list-formats-ext
4) Run the app (web profile)
The web build needs web/sqlite3.wasm. It is committed; this is the command that
refreshes it. The fetcher lives in ANTfrastructure, next to the version and SHA256
it reads, rather than in a per-app copy:
bash third_party/ANTfrastructure/linux/scripts/05-frameworks/flutter/setup-sqlite3-wasm.sh .
The version and its SHA256 both come from ANTfrastructure's versions.env, and the
download is checksum-verified, so a tampered, truncated or simply wrong-version
asset fails here rather than in a browser. That check is not theoretical: the
copy that was committed did not match the version the script claimed to fetch.
It also wants web/pkg/, the Rust core built for wasm, which is generated and
gitignored: without it the page waits 20 s for the core and then starts without
it, and only the About page's Rust demo is missing. Build it as
platforms.md § Web Build (WASM) shows, then run with the
COOP/COEP headers that page names (Firefox and Safari need them to load the core):
flutter run -d web-server --profile --web-port 8080 --web-hostname 0.0.0.0 \
--web-header=Cross-Origin-Opener-Policy=same-origin \
--web-header=Cross-Origin-Embedder-Policy=require-corp
Open http://127.0.0.1:8080 in your browser.
5) Build API docs
bash scripts/linux/generate-docs.sh
Serve generated docs locally:
dart pub global activate dhttpd
export PATH="$PATH:$HOME/.pub-cache/bin"
dhttpd --path doc/api --host 127.0.0.1 --port 8080
6) WSL2 USB passthrough (if needed)
In Windows PowerShell (bus ids change between plug-ins):
usbipd list
usbipd attach --wsl --busid 1-1.2
Then in WSL, sudo modprobe uvcvideo makes it /dev/video0 (lsusb shows it). WebRTC to
a browser also needs networkingMode=mirrored in %USERPROFILE%\.wslconfig; both are
gone after a WSL restart (AGENTS.md § 4).
Next Steps
- Continue with Platforms for target-specific builds.
- Continue with Camera Streaming for WebRTC pipelines.