@lokutor/sdk latest: 1.5.1
The Python SDK (lokutor on PyPI) was versioned in lockstep with the JS SDK from 1.3.0 and is at 1.4.1; 1.5.0 and 1.5.1 are JS-only releases — see the Python API Reference for its current surface.
Changelog
1.5.1
- JS: new
requestMicrophone(), to call inside the tap or click that starts a call; pass its result toBrowserAudioManagerasmicrophone. The call then uses that stream instead of asking for the microphone after the connection opens, which iOS Safari could refuse without showing its prompt (the agent spoke and nothing the caller said reached it). It also moves an iOS audio session left in'playback'back to'auto', since iOS refuses the microphone in playback mode. - JS: when the microphone cannot start,
connect()now rejects with the new codeaudio.microphone_unavailable(not retryable) and closes the session. Previouslyconnect()stayed pending while the session kept talking. - JS:
BrowserAudioManager.cleanup()closes its AudioContext;init()no longer waits indefinitely onAudioContext.resume(). Server errors reachonErroronce (they were delivered twice).
1.5.0
- JS: the voice-agent client reconnects only after the connection drops or the server goes away
(close codes 1001, 1006, 1011–1014). When the server ends the session on purpose (1000, 1008, 4xxx)
it stays closed, fires
errorwith codesession.endedand the server’s reason, statusdisconnected, and a newendedevent — previously it reconnected into a fresh session. - JS: a reconnection reuses the running microphone (it used to start a second capture, doubling and scrambling the caller’s audio) and resets the response generation counter (it used to discard every response of the new session as stale, so the agent answered and nothing was heard).
- JS: new
session_limitevent when the server announces a session’s remaining time;ConversationalPanelshows it as a countdown, says “Reconnecting…” while the client retries, ends the call visibly when the connection is gone, shows the server’s reason, and addsonEnded(message). - JS:
BrowserAudioManagerkeeps the screen awake while the microphone is live (keepAwake, defaulttrue) and resumes audio when the page returns to the foreground.
1.4.1
- Python:
pyaudio(needed only for local mic/speaker convenience —VoiceAgentClient’s live audio loop, andTTSClient/STTClient’s optional local playback/capture helpers) is now an optionalaudioextra (pip install lokutor[audio]) instead of a hard dependency. It needs PortAudio’s C library, which doesn’t compile on a clean machine without the system package — previously this brokepip install lokutoroutright, and blocked evenTTSClient/STTClientusage that never touches local audio hardware.
1.4.0
- JS: the voice-agent panel’s “listening” curtain is now the agent’s own accent color with a grain texture, replacing a fixed stock-photo background
- JS: removed a leftover pulse animation and an opacity dim on the visualizer that were never updated for the current binary (agent/user, no idle) visualizer state
- Backend: a false-positive barge-in that resumes playback now tells the client — previously the
client was left showing
listeningwhile the bot was audibly still speaking (see WebSocket Protocol → Barge-in) - Backend:
/ws/agent’svoiceandlanguagemessages now reject an unrecognised value the same wayPOST /tts/synthesizeand/ws/ttsalready did, instead of silently applying a fallback
1.3.0
- Nine supported languages, Versa 2.0 voice ids
- Wire vocabulary canonicalized to
voice/language(the oldervoice_id/langnames remain accepted as deprecated aliases)
1.2.1
Point release on top of 1.2.0.1.2.0
- Standalone speech-to-text:
STTClientfor one-shot transcription of a complete audio clip (POST /stt/transcribe),SpeechToTextClientfor continuous/live transcription overWS /ws/stt— neither requires the full voice-agent (LLM + TTS) pipeline simpleTranscribe()convenience function
1.1.43
- Tool calling improvements:
submitToolResult()method,call_idin tool_call events - Conversation panel UI component
- Python SDK:
update_prompt(),get_transcript(),get_transcript_text() - Python SDK:
on()event listener pattern
1.1.17
- Initial stable release
VoiceAgentClientfor real-time conversationsTTSClientfor standalone text-to-speechBrowserAudioManagerfor Web Audio APILokutorErrorwith typed error codes- WebSocket reconnection with exponential backoff
- Viseme streaming support
- 10 voices; language count at the time isn’t preserved accurately in this entry — see Voices, Languages & Models for the current count (nine)
Versioning policy
- MAJOR — Breaking API changes
- MINOR — New features, backwards compatible
- PATCH — Bug fixes, backwards compatible