Repository navigation
Releases: talkaboutdesign/tiklive
Release list
v0.6.0-nightly.20261013173804
Minor Changes
-
#21
2258cefThanks @talkaboutdesign! - Actions:- a
jointrigger, for when a viewer joins the stream, with once per viewer per stream (on by default) - a
friendsaudience (mutual follows), andfollowersnow includes friends - a minimum follower count on chat and join triggers, for keeping throwaway accounts out
- a
{followers}placeholder for the viewer's follower count - presets: one-click starting points for new actions in the editor
When a session reconnects into a new room, the action rules are told the previous stream ended (TikTok doesn't always send
streamEnd), so like milestones and once-per-stream joins start fresh. - a
-
#17
7c6bb18Thanks @talkaboutdesign! - The app has a new look:- a sidebar with your account and live status, navigation, the sound mini player and the update button
- light and dark themes, following your system by default
- a Settings page for your username, sound, theme and updates
- an Overlays page with live previews, per-overlay options and test events
The Actions player's OBS setup moved to the Overlays page. On macOS the desktop app uses an inset title bar.
-
#16
c1306cdThanks @talkaboutdesign! - Desktop app: choose Stable or Nightly updates in the new Settings dialog. Nightly builds come out for every merged change. The desktop app has a new icon. -
#26
5431d32Thanks @talkaboutdesign! - Newgoalevent for LIVE goals (such as "GIFT GAL"), with progress per target and the top contributors.LiveUser.gifterLevelcarries the viewer's gifter level, and the dashboard shows a goal card and "Lv" badges in chat. Demo mode emits goals and gifter levels. Both are additive, soPROTOCOL_VERSIONstays at 1. -
#19
9906806Thanks @talkaboutdesign! - New Media page: browse, play, rename and delete your sounds, images and videos, upload by drag and drop, and record a new sound (up to 30 seconds) with a trim slider.PATCH /api/media/:idrenames a file. The desktop app asks for microphone access when you record, and only allows the microphone and copying links for its own pages. -
#38
e4350bdThanks @talkaboutdesign! - - The Media page's search also searches MyInstants (press Enter), and Add copies a sound into your library- Viewer names on the dashboard and the Viewers leaderboard, and your own name in the sidebar, open the TikTok profile
- A MyInstants search with no results now says so, instead of "Couldn't reach MyInstants"
-
#23
63194cbThanks @talkaboutdesign! - OBS overlays for a subathon timer, a top supporters leaderboard and a spin wheel. Each is on the Overlays page with its own options and a URL builder. -
#27
03a236eThanks @talkaboutdesign! - Actions: a{points}placeholder with the viewer's points (including what the triggering event just earned), and an "Answer !points" preset that says "{nickname}, you have {points} points!". -
#32
d083164Thanks @talkaboutdesign! - The server now refuses to listen beyond localhost without--token. Pass--allow-no-tokento keep the old behaviour. -
#18
485e74eThanks @talkaboutdesign! - The dashboard is now a live view: chat with filters for followers, friends, minimum follower count and hidden words, highlighted gifts and subscriptions, a gifts column with top gifters, a way to silence someone in your own view, and an optional video preview. The raw event log is gone.LiveUsergainsfollowerCount,followingCountandfollowStatus(none,followerorfriend), andSessionStatusgainshlsUrl. -
#25
808a9b3Thanks @talkaboutdesign! - Viewer points: viewers earn points for chat, gifts, likes, follows, shares, subscriptions and joins, kept per streamer and saved to<data-dir>/points/. A new Viewers page shows the leaderboard, lets you search, adjust a viewer's points and change how many points each action is worth, and reset everyone. The dashboard shows points on chat rows, and the leaderboard overlay hasmetric=points. New REST routes:GET/DELETE /api/sessions/:username/points,GET/PATCH /api/sessions/:username/points/:userIdandPUT /api/sessions/:username/points/settings. Seedocs/user/points.md. -
#24
c47aaaaThanks @talkaboutdesign! - Actions:- a
webhookstep, which sends an HTTP request (POST, PUT or GET) when the action runs. Use it to reach Streamer.bot, Minecraft plugins, Home Assistant, Zapier or other apps on your network. The server sends it, so LAN addresses work - without a body, POST and PUT send a JSON description of the action, with the viewer, the event and the template values
- placeholders work in the webhook's address (percent-encoded) and body
- the editor's Test button sends the webhook too
- a
Patch Changes
-
#39
92766c6Thanks @talkaboutdesign! - Keep temporary room lookup failures retryable and bound device cookie requests by the connection timeout. -
#40
ce13caeThanks @talkaboutdesign! - Wait for server cleanup and pending viewer points to be saved before the desktop app quits. -
#44
512f1f3Thanks @talkaboutdesign! - Skip viewer-points lookups and clock reads when the action rule list is empty, while preserving likes and stream resets. -
#34
5d37931Thanks @talkaboutdesign! - Viewer points are saved without pausing live events, and the points files are written compactly, so busy streams stay smooth. -
#42
1ec55b7Thanks @talkaboutdesign! - Isolate points-store locking per streamer and avoid sorting every viewer for small leaderboard pages. -
#46
6945448Thanks @talkaboutdesign! - Fix slow desktop quit by closing app windows before server cleanup and limiting the desktop server grace period to one second, while preserving the final points save. -
#29
d2a1c1cThanks @talkaboutdesign! - Overlays and the browser client no longer show the same chat lines and gifts again after reconnecting. -
#41
45a9ad9Thanks @talkaboutdesign! - Prune unused rule cooldown state and reset per-stream rules when room identity changes across session lifetimes. -
#45
2ac22c7Thanks @talkaboutdesign! - Share JSON encoding of...
v0.6.0-nightly.20261013092938
Minor Changes
-
#21
2258cefThanks @talkaboutdesign! - Actions:- a
jointrigger, for when a viewer joins the stream, with once per viewer per stream (on by default) - a
friendsaudience (mutual follows), andfollowersnow includes friends - a minimum follower count on chat and join triggers, for keeping throwaway accounts out
- a
{followers}placeholder for the viewer's follower count - presets: one-click starting points for new actions in the editor
When a session reconnects into a new room, the action rules are told the previous stream ended (TikTok doesn't always send
streamEnd), so like milestones and once-per-stream joins start fresh. - a
-
#17
7c6bb18Thanks @talkaboutdesign! - The app has a new look:- a sidebar with your account and live status, navigation, the sound mini player and the update button
- light and dark themes, following your system by default
- a Settings page for your username, sound, theme and updates
- an Overlays page with live previews, per-overlay options and test events
The Actions player's OBS setup moved to the Overlays page. On macOS the desktop app uses an inset title bar.
-
#16
c1306cdThanks @talkaboutdesign! - Desktop app: choose Stable or Nightly updates in the new Settings dialog. Nightly builds come out for every merged change. The desktop app has a new icon. -
#26
5431d32Thanks @talkaboutdesign! - Newgoalevent for LIVE goals (such as "GIFT GAL"), with progress per target and the top contributors.LiveUser.gifterLevelcarries the viewer's gifter level, and the dashboard shows a goal card and "Lv" badges in chat. Demo mode emits goals and gifter levels. Both are additive, soPROTOCOL_VERSIONstays at 1. -
#19
9906806Thanks @talkaboutdesign! - New Media page: browse, play, rename and delete your sounds, images and videos, upload by drag and drop, and record a new sound (up to 30 seconds) with a trim slider.PATCH /api/media/:idrenames a file. The desktop app asks for microphone access when you record, and only allows the microphone and copying links for its own pages. -
#38
e4350bdThanks @talkaboutdesign! - - The Media page's search also searches MyInstants (press Enter), and Add copies a sound into your library- Viewer names on the dashboard and the Viewers leaderboard, and your own name in the sidebar, open the TikTok profile
- A MyInstants search with no results now says so, instead of "Couldn't reach MyInstants"
-
#23
63194cbThanks @talkaboutdesign! - OBS overlays for a subathon timer, a top supporters leaderboard and a spin wheel. Each is on the Overlays page with its own options and a URL builder. -
#27
03a236eThanks @talkaboutdesign! - Actions: a{points}placeholder with the viewer's points (including what the triggering event just earned), and an "Answer !points" preset that says "{nickname}, you have {points} points!". -
#32
d083164Thanks @talkaboutdesign! - The server now refuses to listen beyond localhost without--token. Pass--allow-no-tokento keep the old behaviour. -
#18
485e74eThanks @talkaboutdesign! - The dashboard is now a live view: chat with filters for followers, friends, minimum follower count and hidden words, highlighted gifts and subscriptions, a gifts column with top gifters, a way to silence someone in your own view, and an optional video preview. The raw event log is gone.LiveUsergainsfollowerCount,followingCountandfollowStatus(none,followerorfriend), andSessionStatusgainshlsUrl. -
#25
808a9b3Thanks @talkaboutdesign! - Viewer points: viewers earn points for chat, gifts, likes, follows, shares, subscriptions and joins, kept per streamer and saved to<data-dir>/points/. A new Viewers page shows the leaderboard, lets you search, adjust a viewer's points and change how many points each action is worth, and reset everyone. The dashboard shows points on chat rows, and the leaderboard overlay hasmetric=points. New REST routes:GET/DELETE /api/sessions/:username/points,GET/PATCH /api/sessions/:username/points/:userIdandPUT /api/sessions/:username/points/settings. Seedocs/user/points.md. -
#24
c47aaaaThanks @talkaboutdesign! - Actions:- a
webhookstep, which sends an HTTP request (POST, PUT or GET) when the action runs. Use it to reach Streamer.bot, Minecraft plugins, Home Assistant, Zapier or other apps on your network. The server sends it, so LAN addresses work - without a body, POST and PUT send a JSON description of the action, with the viewer, the event and the template values
- placeholders work in the webhook's address (percent-encoded) and body
- the editor's Test button sends the webhook too
- a
Patch Changes
-
#39
92766c6Thanks @talkaboutdesign! - Keep temporary room lookup failures retryable and bound device cookie requests by the connection timeout. -
#40
ce13caeThanks @talkaboutdesign! - Wait for server cleanup and pending viewer points to be saved before the desktop app quits. -
#44
512f1f3Thanks @talkaboutdesign! - Skip viewer-points lookups and clock reads when the action rule list is empty, while preserving likes and stream resets. -
#34
5d37931Thanks @talkaboutdesign! - Viewer points are saved without pausing live events, and the points files are written compactly, so busy streams stay smooth. -
#42
1ec55b7Thanks @talkaboutdesign! - Isolate points-store locking per streamer and avoid sorting every viewer for small leaderboard pages. -
#29
d2a1c1cThanks @talkaboutdesign! - Overlays and the browser client no longer show the same chat lines and gifts again after reconnecting. -
#41
45a9ad9Thanks @talkaboutdesign! - Prune unused rule cooldown state and reset per-stream rules when room identity changes across session lifetimes. -
#45
2ac22c7Thanks @talkaboutdesign! - Share JSON encoding of live event, status and action publications across WebSocket subscribers. -
#30
e123911Thanks @talkaboutdesign! - Connections now notice a silent TikTok socket (no data for 60 seconds) and reconnect, instead...
v0.6.0-nightly.20261012212507
Minor Changes
-
#21
2258cefThanks @talkaboutdesign! - Actions:- a
jointrigger, for when a viewer joins the stream, with once per viewer per stream (on by default) - a
friendsaudience (mutual follows), andfollowersnow includes friends - a minimum follower count on chat and join triggers, for keeping throwaway accounts out
- a
{followers}placeholder for the viewer's follower count - presets: one-click starting points for new actions in the editor
When a session reconnects into a new room, the action rules are told the previous stream ended (TikTok doesn't always send
streamEnd), so like milestones and once-per-stream joins start fresh. - a
-
#17
7c6bb18Thanks @talkaboutdesign! - The app has a new look:- a sidebar with your account and live status, navigation, the sound mini player and the update button
- light and dark themes, following your system by default
- a Settings page for your username, sound, theme and updates
- an Overlays page with live previews, per-overlay options and test events
The Actions player's OBS setup moved to the Overlays page. On macOS the desktop app uses an inset title bar.
-
#16
c1306cdThanks @talkaboutdesign! - Desktop app: choose Stable or Nightly updates in the new Settings dialog. Nightly builds come out for every merged change. The desktop app has a new icon. -
#26
5431d32Thanks @talkaboutdesign! - Newgoalevent for LIVE goals (such as "GIFT GAL"), with progress per target and the top contributors.LiveUser.gifterLevelcarries the viewer's gifter level, and the dashboard shows a goal card and "Lv" badges in chat. Demo mode emits goals and gifter levels. Both are additive, soPROTOCOL_VERSIONstays at 1. -
#19
9906806Thanks @talkaboutdesign! - New Media page: browse, play, rename and delete your sounds, images and videos, upload by drag and drop, and record a new sound (up to 30 seconds) with a trim slider.PATCH /api/media/:idrenames a file. The desktop app asks for microphone access when you record, and only allows the microphone and copying links for its own pages. -
#23
63194cbThanks @talkaboutdesign! - OBS overlays for a subathon timer, a top supporters leaderboard and a spin wheel. Each is on the Overlays page with its own options and a URL builder. -
#27
03a236eThanks @talkaboutdesign! - Actions: a{points}placeholder with the viewer's points (including what the triggering event just earned), and an "Answer !points" preset that says "{nickname}, you have {points} points!". -
#32
d083164Thanks @talkaboutdesign! - The server now refuses to listen beyond localhost without--token. Pass--allow-no-tokento keep the old behaviour. -
#18
485e74eThanks @talkaboutdesign! - The dashboard is now a live view: chat with filters for followers, friends, minimum follower count and hidden words, highlighted gifts and subscriptions, a gifts column with top gifters, a way to silence someone in your own view, and an optional video preview. The raw event log is gone.LiveUsergainsfollowerCount,followingCountandfollowStatus(none,followerorfriend), andSessionStatusgainshlsUrl. -
#25
808a9b3Thanks @talkaboutdesign! - Viewer points: viewers earn points for chat, gifts, likes, follows, shares, subscriptions and joins, kept per streamer and saved to<data-dir>/points/. A new Viewers page shows the leaderboard, lets you search, adjust a viewer's points and change how many points each action is worth, and reset everyone. The dashboard shows points on chat rows, and the leaderboard overlay hasmetric=points. New REST routes:GET/DELETE /api/sessions/:username/points,GET/PATCH /api/sessions/:username/points/:userIdandPUT /api/sessions/:username/points/settings. Seedocs/user/points.md. -
#24
c47aaaaThanks @talkaboutdesign! - Actions:- a
webhookstep, which sends an HTTP request (POST, PUT or GET) when the action runs. Use it to reach Streamer.bot, Minecraft plugins, Home Assistant, Zapier or other apps on your network. The server sends it, so LAN addresses work - without a body, POST and PUT send a JSON description of the action, with the viewer, the event and the template values
- placeholders work in the webhook's address (percent-encoded) and body
- the editor's Test button sends the webhook too
- a
Patch Changes
-
#34
5d37931Thanks @talkaboutdesign! - Viewer points are saved without pausing live events, and the points files are written compactly, so busy streams stay smooth. -
#29
d2a1c1cThanks @talkaboutdesign! - Overlays and the browser client no longer show the same chat lines and gifts again after reconnecting. -
#30
e123911Thanks @talkaboutdesign! - Connections now notice a silent TikTok socket (no data for 60 seconds) and reconnect, instead of looking live with no events. Set withidleTimeout. -
#28
6f7425fThanks @talkaboutdesign! - Actions: placeholder values in a JSON webhook body are now escaped, so a viewer's nickname or comment can't add or change fields in the request.
v0.6.0-nightly.20261012175254
Minor Changes
-
#17
7c6bb18Thanks @talkaboutdesign! - The app has a new look:- a sidebar with your account and live status, navigation, the sound mini player and the update button
- light and dark themes, following your system by default
- a Settings page for your username, sound, theme and updates
- an Overlays page with live previews, per-overlay options and test events
The Actions player's OBS setup moved to the Overlays page. On macOS the desktop app uses an inset title bar.
-
#16
c1306cdThanks @talkaboutdesign! - Desktop app: choose Stable or Nightly updates in the new Settings dialog. Nightly builds come out for every merged change. The desktop app has a new icon.
v0.5.0
Minor Changes
-
#14
f8b47a7Thanks @talkaboutdesign! - Add Actions: rules that turn LIVE events into sounds, images, GIFs, videos, text-to-speech and OBS scene switches. Set them up on the new Actions page (/actions.html), and add the actions player (/overlays/actions.html) to OBS. Triggers are gifts (any or a specific one, with a minimum coin value), follows, shares, subscriptions, chat commands or keywords, and like milestones, with optional cooldowns. Rules and uploaded files are stored in the data directory:~/.tikliveby default, or--data-dir <dir>. The desktop app uses its app data folder.Sound steps can search MyInstants from the editor. Picking a result copies the sound into your media library, so it keeps working offline and OBS never loads it from MyInstants.
The desktop app now plays action sounds and text-to-speech itself, with no click needed to allow audio. The dashboard and Actions page headers have controls to turn app sound on or off, set the volume, and skip or clear queued actions. In the desktop app, the OBS player link on the Actions page shows only images, videos and scene switches, so nothing plays twice. Links to tiklive's own pages now open in app windows.
The WebSocket protocol gains an
actionssubscribe option and anactionmessage. The browser client gains the matchingactionsoption and"action"event. Both are additive, soPROTOCOL_VERSIONstays 1.The dashboard was also redesigned. It asks for your TikTok username once and remembers it, and you can change it from the header.
v0.4.0
Minor Changes
-
#10
2f4a16cThanks @talkaboutdesign! - tiklive is now one npm package,tiklive, replacing@tiklive/server,@tiklive/core,@tiklive/contractsand@tiklive/client. Installtikliveand update imports:Before After @tiklive/servertiklive@tiklive/server/nodetiklive/node@tiklive/server/buntiklive/bun@tiklive/coretiklive/core@tiklive/core/testingtiklive/testing@tiklive/contractstiklive/contracts@tiklive/clienttiklive/client@tiklive/client/tiklive.jstiklive/tiklive.jsThe
tiklivecommand and the server's HTTP and WebSocket API are unchanged.
Patch Changes
- #8
610baa2Thanks @talkaboutdesign! - The dashboard event log and the chat overlay now show gift images. The demo stream uses TikTok's real gift art instead of placeholder icons, and its Galaxy gift has the correct gift ID (11046).
v0.3.0
Minor Changes
-
#5
7a50c10Thanks @talkaboutdesign! -npx @tiklive/servernow serves the dashboard and example overlays at http://localhost:8080 unless you pass--static <dir>. -
#4
e1d8ebdThanks @talkaboutdesign! - Add the gift catalog and more room details.GET /api/gifts(andTikLive#gifts()in the client) returns TikTok's gift list, sorted by price and cached for an hour.SessionStatusgainsstreamStartedAt(TikTok's stream start time, which survives reconnects) andcoverUrl.
Patch Changes
- Updated dependencies [
e1d8ebd]:- @tiklive/contracts@0.3.0
- @tiklive/core@0.3.0
- @tiklive/client@0.3.0
v0.2.0
Minor Changes
-
#1
8bf14a9Thanks @talkaboutdesign! - Add thechatDeleteevent, sent when a moderator or the host deletes chat messages. The chat overlay removes deleted messages.@tiklive/corere-exports theLiveEvent,LiveEventOf,LiveEventTypeandLiveUsertypes. An embedded server'shello.serverVersiondefaults to the package version instead of"dev". README links work on npm.
Patch Changes
- Updated dependencies [
8bf14a9]:- @tiklive/contracts@0.2.0
- @tiklive/core@0.2.0
- @tiklive/client@0.2.0
v0.1.0
First public release of tiklive: connect to TikTok LIVE without a signing service, run a self-hosted event server for overlays and apps, and build overlays with a typed client.
Install
npm (Node 22+ or Bun):
npx @tiklive/server # or: bunx @tiklive/server
npm install @tiklive/core # use the connector in your own codePackages
| Package | |
|---|---|
@tiklive/contracts |
Event and protocol schemas |
@tiklive/core |
TikTok LIVE connection as an Effect Stream |
@tiklive/server |
Event server + tiklive CLI |
@tiklive/client |
Typed overlay client (4 KB, no dependencies) |
See the README and protocol docs.