Releases: PsycherosAI/Psycheros
psycheros-v0.8.18
Fixed
- Voice WebSocket: 25s ping heartbeat prevents Deno from killing the connection
during long thinking periods (tool calls, LLM round-trips). - Vanilla (continuous) voice mode:
pttModeis now compared as"ptt"instead
of truthy, so non-PTT mode no longer blocks audio frame sending at call start. - Tauri 2.x desktop: native mic capture delivers frames as
ArrayBuffer, not
Array. Both shapes are now handled in the voice WebSocket send path and the
mic test diagnostic.
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
psycheros-v0.8.17
Fixed
- PTT mode: gate audio frame sending and server-side audio on pttHolding to
prevent spurious RECORDING state - PTT mode: remove global pttEnabled, make PTT per-call only
- PTT mode: add session.pttMode to track PTT vs vanilla mode
- UI state: always show 'Listening' for idle state regardless of PTT mode
- UI state: show 'Listening' not 'Recording' in vanilla mode
- STT provider: fix module-level sttProvider in fallback path
- VAD: reset nativePeakRms in browser VAD
- VAD: send user_speech_start when VAD detects speech (server STT)
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
psycheros-v0.8.16
Fixed
- Silence detector check loop no longer dies when
analyserNodeisn't ready
yet. An earlyreturncancelled rescheduling, leaving VAD dead for the entire
call — same bug class as the WS-connect race fixed in 0.8.15, now also fixed
for the browser-STT audio-analysis path.
Changed
- Added VAD state-transition diagnostic logging: speech detected (with RMS +
capture source), silence-after-speech (with timer duration), and
user_silencesent. Visible in the voice debug panel and/api/voice/log.
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
psycheros-v0.8.15
Fixed
- Voice-chat config
<script>tags (sttProvider, pttEnabled, etc.) were
orphaned during fragment mounting — only the overlay<div>reached the DOM.
On mobile (Chrome Android) this silently fell back to browser STT instead of
the configured Deepgram provider, producing garbled transcriptions and sending
zero audio frames to the server. Desktop (Tauri) was unaffected. All fragment
children now mount correctly. - Silence detector (VAD) now starts when push-to-talk is toggled off mid-call
for server-side STT. Previously it only ran at call init when PTT was globally
off — so toggling PTT off after call start left the call stuck on RECORDING
indefinitely. - Silence detector check loop no longer dies when the voice WebSocket isn't open
yet. An early return cancelled rescheduling, leaving VAD dead for the entire
call until a full restart.
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
psycheros-v0.8.13
Fixed
- Fixed silent config fetch failure in voice chat by falling back to
/api/voice/statuswhen the HTML config peek returns 'browser'. This recovers
the correct STT provider and activates native mic capture. - Simplified context inspector label to just the turn number instead of the
unreadable "Turn X / Y of Z" on conversations longer than 50 turns.
Changed
- Added comprehensive diagnostics for voice calls:
POST /api/voice/log
endpoint, unconditional diagnostic logs at config resolution, native capture
success/failure, and config peek recovery. - Added STT/TTS provider info to
/api/voice/statusresponse and voice chat
logs. - Added live-session capture event logging to prove frames route through the
live voice session (not the test probe).
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
entity-core-v0.4.4
Fixed
- Fixed orphaned
vec_graph_nodesentries that appeared after prune/merge
phases.verifyVectorTableSyncnow removes orphans on startup instead of just
warning;consolidateGraphadds a Phase 5 sweep that removes vec entries for
any soft-deleted node.
How to install
This package ships as a scoped source release. Download entity-core-v*.tar.gz
(or .zip) — those archives contain the entity-core package tree only.
The archives prefixed Psycheros- are GitHub's auto-attached full-monorepo
source — they contain the whole workspace, useful if you want the companion
packages too.
psycheros-v0.8.12
Fixed
- Fixed a memory loading bug in the editor where GET handler for
/fragments/settings/memories/:granularity/:datestripped the slug before
callingreadMemory, so entity-core fell intofindMemoryByDateand returned
the first file matching the date prefix. On dates with multiple significant
memories, the editor loaded the wrong memory's body while showing the correct
title.
Changed
- Added comprehensive voice pipeline diagnostic logging to trace audio flow from
mic capture through to STT output. Five new logging points: JS
handleVoiceMessage(daemon message types), JSchannel.onmessage(frame
send counts), daemon binary frame reception (WS handler), daemon STT
lifecycle, and Rust tap block RMS audio level (detects silent capture). With
voiceChatDebugon, a single voice call shows exactly where audio dies in the
pipeline. - Added frame-send logging to
voice.jsto track dropped frames whenvoiceWs
isn't open yet and the first successful frame transmission to the WebSocket.
Logging is throttled to avoid drowning the console. - Restored the macOS mic permission check (authorizationStatus) before calling
requestAccessto skip redundant permission prompts on subsequent voice
calls.
How to install
The canonical artifact for the harness is the container image:
docker pull ghcr.io/psycherosai/psycheros:<version>
# or `:latest` for the most recent releaseSee the README's Docker block
for the recommended docker run invocation, env-var reference, and volume
layout.
The archives prefixed Psycheros- below are GitHub's auto-attached
full-monorepo source — useful for building the image yourself, but the published
image at GHCR is the supported install path.
launcher-v2-v0.2.42
Fixed
- macOS mic permission prompt now appears only once (first voice call) instead
of every call. Restored theauthorizationStatuscheck beforerequestAccess
— if macOS already reports "authorized" (status 3), skip the request and
return early without triggering the system permission prompt.
Changed
- Added RMS audio level logging to the Rust tap block (every 100th frame) to
detect when mic capture is producing silence vs actual audio. 0.0 = dead
silence (wrong device or muted), ~0.05 = room noise, ~0.1+ = speech. This
catches "frames are flowing but mic isn't capturing" — the hardest issue to
diagnose without direct measurement. UsesArc<AtomicU32>for the frame
counter since the tap closure must beFn(notFnMut) and is called from
AVAudioEngine's render thread.
macOS
Download Psycheros_<version>_aarch64.dmg, double-click to mount, drag the
Psycheros app into Applications/.
The build is unsigned by deliberate decision. macOS Gatekeeper will refuse
to open it on first launch with "can't be verified." The dance to bypass this is
one-time per install:
- Right-click the Psycheros app in Applications → Open.
- The OS shows a confirmation dialog with an Open button (vs. only
Cancel in the default double-click flow). - Future launches work normally.
Once installed, the app supervises a persistent Psycheros daemon via launchd —
closing the window doesn't stop me. See the in-app Diagnostics card for paths
and the Settings card for entity config.
Psycheros.app.tar.gz is the auto-updater bundle format — not useful for
first-install; it's consumed by tauri-plugin-updater when the launcher checks
for shell-binary updates.
Windows
Download Psycheros_<version>_x64_en-US.msi and run it.
Windows SmartScreen will flag the installer as unrecognized because it is
unsigned. Click More info → Run anyway to proceed. This is one-time
per version.
The installer places Psycheros in C:\Program Files\Psycheros\. At the end of
the wizard, the launcher registers a Task Scheduler job that supervises the
daemon — closing the launcher window or the system-tray icon does not stop
the daemon. The daemon starts at login and restarts automatically on crash.
Psycheros_<version>_x64-setup.exe is the NSIS-based alternative installer with
the same content — use whichever you prefer.
launcher-v2-v0.2.41
Fixed
- macOS mic-capture now correctly resamples audio at any hardware sample rate,
not just 48kHz. The integer decimation from 0.2.40 only handled 48kHz cleanly;
at 24kHz (which AVAudioEngine hands out for some AirPods configurations) it
shipped audio at the wrong rate, which would have produced garbage
speech-to-text. Switched to linear interpolation with a float ratio — works
for 48kHz, 44.1kHz, 32kHz, 24kHz, and 16kHz hardware formats. Also adds a
defensive bounds check to skip empty buffers and avoid reading past the input.
macOS
Download Psycheros_<version>_aarch64.dmg, double-click to mount, drag the
Psycheros app into Applications/.
The build is unsigned by deliberate decision. macOS Gatekeeper will refuse
to open it on first launch with "can't be verified." The dance to bypass this is
one-time per install:
- Right-click the Psycheros app in Applications → Open.
- The OS shows a confirmation dialog with an Open button (vs. only
Cancel in the default double-click flow). - Future launches work normally.
Once installed, the app supervises a persistent Psycheros daemon via launchd —
closing the window doesn't stop me. See the in-app Diagnostics card for paths
and the Settings card for entity config.
Psycheros.app.tar.gz is the auto-updater bundle format — not useful for
first-install; it's consumed by tauri-plugin-updater when the launcher checks
for shell-binary updates.
Windows
Download Psycheros_<version>_x64_en-US.msi and run it.
Windows SmartScreen will flag the installer as unrecognized because it is
unsigned. Click More info → Run anyway to proceed. This is one-time
per version.
The installer places Psycheros in C:\Program Files\Psycheros\. At the end of
the wizard, the launcher registers a Task Scheduler job that supervises the
daemon — closing the launcher window or the system-tray icon does not stop
the daemon. The daemon starts at login and restarts automatically on crash.
Psycheros_<version>_x64-setup.exe is the NSIS-based alternative installer with
the same content — use whichever you prefer.
launcher-v2-v0.2.40
Fixed
- macOS mic-capture no longer crashes on start. The crash log from 0.2.39
pinpointed the failure toinstallTapOnBus_bufferSize_format_block— Apple
throwsNSInvalidArgumentExceptionwhen the tap format doesn't match the
input node's output format. We were requesting 16kHz Float32 on a hardware
input node that runs at 48kHz. The fix queries the hardware's actual format
viaoutputFormatForBus(0)and decimates in Rust to ~16kHz (take every Nth
sample) — same algorithm the original JS path used. Mic capture now works on
all Macs regardless of native sample rate.
macOS
Download Psycheros_<version>_aarch64.dmg, double-click to mount, drag the
Psycheros app into Applications/.
The build is unsigned by deliberate decision. macOS Gatekeeper will refuse
to open it on first launch with "can't be verified." The dance to bypass this is
one-time per install:
- Right-click the Psycheros app in Applications → Open.
- The OS shows a confirmation dialog with an Open button (vs. only
Cancel in the default double-click flow). - Future launches work normally.
Once installed, the app supervises a persistent Psycheros daemon via launchd —
closing the window doesn't stop me. See the in-app Diagnostics card for paths
and the Settings card for entity config.
Psycheros.app.tar.gz is the auto-updater bundle format — not useful for
first-install; it's consumed by tauri-plugin-updater when the launcher checks
for shell-binary updates.
Windows
Download Psycheros_<version>_x64_en-US.msi and run it.
Windows SmartScreen will flag the installer as unrecognized because it is
unsigned. Click More info → Run anyway to proceed. This is one-time
per version.
The installer places Psycheros in C:\Program Files\Psycheros\. At the end of
the wizard, the launcher registers a Task Scheduler job that supervises the
daemon — closing the launcher window or the system-tray icon does not stop
the daemon. The daemon starts at login and restarts automatically on crash.
Psycheros_<version>_x64-setup.exe is the NSIS-based alternative installer with
the same content — use whichever you prefer.