Skip to content

Releases: Microck/ambivalence

v0.3.0

Choose a tag to compare

@Microck Microck released this 21 Oct 22:10
a31cfd7

the phone can now record and share audio with your agent on android, ios and the browser.

  • record a wav clip with audio_record, or listen continuously with audio_listen_start, audio_listen_next and audio_listen_stop.
  • check loudness and clipping with audio_level.
  • record from the cli with ambivalence listen --duration 2m -o recording.wav, or use --duration 0 until Ctrl+C.
  • stopping a listening session interrupts a pending chunk without timing out or disconnecting the agent. recording also stops when the agent or phone disconnects.

audio uses the existing encrypted pairing link. update the phone app and agent together to use the new tools. see the audio guide for limits and examples.

the android apk is debug-signed. the ios ipa is unsigned and needs signing with your own team before installation. checksums.txt covers the cli and mobile downloads.

v0.2.2

Choose a tag to compare

@Microck Microck released this 20 Oct 13:44
d68ec85

the ios app now has a forget agent action. confirm it to remove the saved pairing, disconnect active agent sessions and return to the first-time pairing instructions. your hub address and camera permissions stay saved.

  • pending pairing prompts are cancelled, and old sessions cannot keep using the camera after forgetting.
  • pair again with the fresh code shown in the app.

the iOS IPA is unsigned. sign it with your own team before installing. the Android APK is debug-signed.

the simulator pairing tests are running separately.

v0.2.1

Choose a tag to compare

@Microck Microck released this 20 Oct 03:43
cbb1d24

browser-host recovery fixes and smoother repeated captures.

  • invalid hub URLs now show a recoverable error without disconnecting the active link. late callbacks from an old socket no longer reset its replacement.
  • same-size captures reuse the canvas backing store while still drawing every frame; changing image dimensions resizes it.
  • CLI, MCP and mobile version reporting are aligned at 0.2.1.

verified with deterministic browser flows, Go tests, a real-process simulated-phone pairing/reconnect/capture run, and native build checks. physical cameras and mobile-device image quality were not tested in this pass.

download the binary for your platform below and check it against checksums.txt. the APK is debug-signed. sign the unsigned iOS IPA with your own team before installing it. npm publication is pending.

full changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@Microck Microck released this 19 Oct 10:39

select an exact camera lens and control still-camera settings from MCP or the cli.

  • camera_list now returns lens IDs, labels and control capabilities. use camera_switch or ambivalence switch '<id>' to select one.
  • camera_configure and ambivalence configure JSON set manual focus, shutter time and ISO, exposure bias, and white balance where the selected camera supports them. omitted groups keep their settings; auto resets replace the selected group.
  • status and capture metadata include the camera ID and settings. unsupported controls return explicit errors.
ambivalence cameras
ambivalence configure '{"focusMode":"manual","focusPosition":0}'
ambivalence configure '{"exposureMode":"manual","exposureTime":0.008,"iso":100}'
ambivalence capture -o shot.jpg

see camera controls for ranges, platform differences and examples. Android accepts RGB white-balance gains; iOS also accepts Kelvin. browser controls depend on the browser and camera.

install with npm install -g ambivalence@0.2.0, or download a binary below and check it against checksums.txt. the APK is debug-signed. sign the unsigned iOS IPA with your own team before installing it.

full changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@Microck Microck released this 18 Oct 20:00

first release. your coding agent gets a camera: your phone.

https://github.com/Microck/ambivalence/raw/main/.github/assets/demo.mp4

what's in it

  • ambivalence mcp: mcp server with camera_capture (returns the jpeg to the model), camera_connect, camera_switch, camera_torch, camera_zoom, camera_list, camera_status
  • ambivalence cli: pair, capture, torch, switch, zoom, cameras, status, plus hub (with --tunnel for phones off your network)
  • android app (ambivalence.apk), ios app (ambivalence-unsigned.ipa, sign it with your own team to sideload) and a browser host served by the hub

how it behaves

  • pair once: the phone shows a code, you give it to the agent, both sides show the same confirmation code, you tap confirm. after that the agent reaches the phone by itself, through app restarts and network drops
  • the app finds the hub on your wi-fi over mdns, nothing to type. on networks that block that, scan the qr code ambivalence hub --tunnel prints
  • hubs are untrusted relays. pairing is a p-256 key exchange checked by the confirmation codes, and every request, reply and frame after it is aes-256-gcm sealed in strict order, so a rogue hub can't see frames, inject requests or forge images

install

grab the binary for your platform below, or go install github.com/Microck/ambivalence/cmd/ambivalence@latest. check downloads against checksums.txt.

the apk is a debug-signed build. the browser host trusts the hub that serves it, so only use it through a hub you run.