Skip to main content

Annotate faster. See deeper. Sound smarter.

Project description

auvux

auvux

Annotate faster. See deeper. Sound smarter.


Push inference runs from a Python notebook to a browser viewer over WebRTC.

Bytes flow peer-to-peer over a DataChannel; identical bytes across runs and viewers are deduplicated via per-viewer SHA-256 content addressing. Auth is GitHub OAuth (user:email scope) verified by an HMAC-signed JWT — your tokens never leave your machine.

Install

pip install --pre auvux

(--pre while we're on the 0.1.0a1 alpha release.)

Use

auvux login           # GitHub Device Flow, caches a JWT in ~/.auvux/
auvux whoami          # confirm
import auvux
from auvux import lanes, markers

# Same as `auvux login`, but inline. Idempotent — no-op if already
# signed in.
auvux.login()

canvas = auvux.Canvas("Beat Detection")
canvas.add(
    lanes.Waveform.from_path("demo.wav", size=160, label="mix"),
    markers=[markers.vlines(beats, color="#FFFF00")],
)
canvas.add(lanes.Heatmap(spect, yaxis="mel", fmin=30, fmax=11000, size=256))
canvas.add(lanes.line(t, beat_logits, color="#4CAF50", label="beats", fill=True))
canvas.minimap(from_lane=0)
canvas.clicks(beats, freq=800)
canvas.show()                  # opens at https://inference.auvux.com

Open https://inference.auvux.com in your browser before running canvas.show() — the publisher waits up to 60 seconds for at least one viewer to be present.

Waveform.from_path() accepts both local paths and http(s):// URLs; remote files are fetched once into memory and reused without a second round-trip on emit.

What gets sent

Each call to canvas.show() packages:

  • A manifest.json describing the lanes and their layout
  • Sidecar files: WAV / NPY / NPZ / CSV / JSON, per lane type
  • Click-track time lists (if any)

The viewer pre-announces which file hashes it already has, so unchanged audio across iterations is sent once — subsequent runs reuse the cached blob.

Auth flow

auvux.login() runs the GitHub Device Flow with scope user:email:

  1. Asks GitHub for a short user code (XXXX-XXXX)
  2. Opens the browser to the verification URL
  3. Polls until you authorise
  4. Swaps the GitHub access token for an auvux JWT at https://inference.auvux.com/api/auth/cli-exchange
  5. Caches the JWT in ~/.auvux/credentials.json (chmod 600)

Subsequent auvux.login() calls are no-ops if the cached token is still valid; pass force=True to re-authenticate.

Environment

Var Default Purpose
AUVUX_SIGNALLING_URL from ~/.auvux/credentials.json, otherwise wss://signalling.auvux.com/signalling/me Override the signalling endpoint (escape hatch for local dev)
AUVUX_API_BASE https://inference.auvux.com Auvux API host used for cli-exchange
AUVUX_GH_CLIENT_ID built-in GitHub OAuth App client id
AUVUX_PEER_WAIT 60 Seconds to wait for a viewer before erroring
AUVUX_ACK_WAIT 30 Seconds to wait per-viewer for delivery ack

Development

git clone https://github.com/auvux/auvux-py
cd auvux-py
pip install -e .

Release a new version: bump version in pyproject.toml, then

git tag v0.1.0a2
git push --tags

The release.yml workflow builds the wheel + sdist and publishes to PyPI via OIDC (Trusted Publisher) — no API token in the repo.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auvux-0.1.1.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

auvux-0.1.1-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file auvux-0.1.1.tar.gz.

File metadata

  • Download URL: auvux-0.1.1.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for auvux-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ec4680894e328d58872862d5434b2f56e9f01b833c0dce1f5291bf186227ca63
MD5 cfcae9c77293f8ee5a43231324f3adcc
BLAKE2b-256 e9af1b912f596e8ade1dba9c0fadc59eaa91647968dd88e53d32bddcee4e55ca

See more details on using hashes here.

File details

Details for the file auvux-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: auvux-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for auvux-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 29d4b43910582d9b4502cd39e21d44c52f7cea5035983d4ee650e0174c41a061
MD5 9d3c8b2fe37ceef712a27b820992a6b9
BLAKE2b-256 68b7b06438c148a8b36c8c12e2f28009a49543b902cc90f502e03052f28da0a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page