Find The Needle × LibertyTalk: Talky Needle
A follow drops a duck named after the viewer on your hay pile, a raid triggers an avalanche, a channel points reward sets off a fake detector alert. Part 1: install the unofficial mod and its bridge. Part 2: choose what happens in the game.
- Level Intermediate
- 11 min read
- Updated November 6, 2026
- Available languages FR · EN
Talky Needle connects your Twitch and YouTube events to your Find The Needle game. When Bob follows your channel, a rubber duck named "Bob" falls on your hay pile. A raid triggers a hay avalanche and throws you into the air. A channel points reward can make your detector beep up to "NEEDLE FOUND!" before revealing it was a fake.
- Trigger
Twitch follow
Bob follows your channel.
- Action
LibertyTalk widget
Sends
{"user_name":"Bob"}to the bridge, through the tunnel. - Outside LibertyTalk
Bridge on your PC
Runs the
new_followerworkflow. - Outside LibertyTalk
Mod in the game
Drops the "Bob" duck.
Warning
Unofficial mod
Talky Needle is an unofficial mod, not affiliated with the developer of Find The Needle, and you use it at your own risk. It requires the full game. The game detects mods at startup and takes the run off the online leaderboards. This exclusion may last after you uninstall. The mod neither reads nor changes the game's .pck file.
Good to know
Tested version
Talky Needle 0.2.1 was run on Find The Needle EA V12, in single player, on Windows 11. A game update can move what the mod relies on: the bridge then prints warning: hooks missing when a game loads.
Turn on Talky Needle in the game
Install the mod and the bridge, test from the F8 menu, open the tunnel, then connect LibertyTalk.
What you need
- Windows 10 or 11.
- Find The Needle, the full game on Steam. The demo does not work: the mod turns itself off.
- Node.js 18 or later, for the bridge.
- cloudflared, to give the bridge a public address.
- A LibertyTalk account with Twitch or YouTube connected.
winget install OpenJS.NodeJS.LTS
winget install --id Cloudflare.cloudflarednode and cloudflared are recognised.Get Talky Needle
- Download Talky NeedleThe TalkyNeedle-0.2.1.zip file, with the mod, the bridge and the scripts.
- Node.js
- cloudflared
Install
Step 1
Extract the zip to a folder you keep
For example
Documents\TalkyNeedle. The bridge and its settings stay in this folder, not in the game folder.Step 2
Close the game and back up your saves
Your saves are in
%APPDATA%\Godot\app_userdata\FindTheNeedle\saves. Copy this folder elsewhere before you continue.Step 3
Run the install script
Open a PowerShell terminal in the
TalkyNeedlefolder and run the command below. The script copiesmods\talky_needlenext toFindTheNeedle.exeand adds aTalkyNeedleline tooverride.cfg. It keeps a copy of this file asoverride.cfg.talky-needle.bak.
powershell -ExecutionPolicy Bypass -File tools\install.ps1steamapps\common\Needle in a Haystack. If your library is elsewhere, add -GameDir "D:\SteamLibrary\steamapps\common\Needle in a Haystack".Warning
After a game update
An update can replace override.cfg. If the mod no longer loads, run the same command again.
Start the bridge
Double-click start-bridge.cmd and leave the window open while you play. The bridge only receives calls on your PC, at http://127.0.0.1:7421. On first start, it creates bridge\config.json with a random token and copies the token to the clipboard without ever showing it, so it stays off your stream.
created config.json with a random token, copied to your clipboard; never shown here
Talky Needle bridge 0.2.1 (unofficial): webhooks on http://127.0.0.1:7421, game link on port 7422
10 webhook(s), 24 workflow(s), waiting for the game...Open the F8 menu and test
Step 1
Load a separate game
Hay added by the mod can stay in the save: keep your main game aside for this test. A "Talky Needle: unofficial mod active" banner appears, and the bridge prints
game connected.Step 2
Press F8
The Talky Needle window opens, with
Bridge connectedat the top right.F8orEsccloses it.Step 3
Click "Duck" on the Effects page
The "Displayed name" field contains
Viewer: close the window, and a duck with this name falls on the pile.
Good to know
Screenshot to add
The F8 window on the Effects page, with the groups of buttons.
You can also run a workflow from a terminal opened in the bridge folder, for example to connect it to a Stream Deck:
node bridge.js fire new_follower user=BobOpen the tunnel
LibertyTalk refuses local addresses: the bridge needs a public address to receive your events. In a second window, run the command below, then note the https://random-words.trycloudflare.com address it prints.
cloudflared tunnel --url http://127.0.0.1:7421Warning
This address changes on every start
A quick tunnel needs no account, but its address changes on every start and Cloudflare reserves it for testing. Update it in LibertyTalk before each stream, or create a named tunnel on your domain to keep it from one stream to the next. ngrok can replace cloudflared if you already use it.
Connect LibertyTalk
The official "Find The Needle · Talky Needle" widget sends your live events to the bridge, through the tunnel. It is free, and each event has its own checkbox in its settings.
Step 1
Install the widget
Select your community in the sidebar. On the widget's page in the Marketplace, click Install, then open it in Widgets and keep the Global scope.
Step 2
Fill in its settings
Enter the three fields in the table below, then click Save.
Step 3
Enable it
In the Activation block, click Enable.
| Field | Value |
|---|---|
| Bridge public URL | The tunnel address, with no trailing / |
| Bridge token | The token value of bridge\config.json, the one the bridge put in the clipboard |
| Chat command (without "!") | foin by default, hay for example: your viewers then type !hay |
Check end to end
With a game loaded and the bridge and tunnel open, ask a friend to follow your channel, or use the LibertyTalk channelFollow trigger test. The Activity page of the F8 menu shows the event with the viewer's name.
Troubleshooting
Nothing happens when the game starts
override.cfg is next to FindTheNeedle.exe and contains the TalkyNeedle line. Run tools\install.ps1 again if needed. The game log, %APPDATA%\Godot\app_userdata\FindTheNeedle\logs\godot.log, must contain [TalkyNeedle] v0.2.1 loaded.The menu shows "Bridge not connected"
start-bridge.cmd and leave its window open. The mod reconnects by itself every two seconds.The bridge prints warning: hooks missing
The bridge prints gust failed: nothing_nearby
hay_rain with "on": "player" right before the gust.LibertyTalk calls the bridge, but nothing happens in the game
How do I uninstall?
tools\install.ps1 -Uninstall. The script removes the line from override.cfg and the mods\talky_needle folder.Choose what happens in the game
The available effects, channel points rewards, on-screen messages and the bridge workflows.
What your events do by default
| Event | Webhook | In-game effect |
|---|---|---|
| Follow | /hooks/follow | A small duck named after the viewer |
| Subscription | /hooks/sub | A giant duck, larger with the tier, that stays 15 minutes |
| Gifted subscriptions | /hooks/gift | A rain of ducks, one per subscription, 30 at most |
| Bits | /hooks/bits | Hay on the pile: at x10, 500 bits add 5000 straws. From 1000 bits, a giant duck as well |
| Raid | /hooks/raid | A hay avalanche, ducks, and you get thrown |
| Donation or Super Chat | /hooks/donation, /hooks/superchat | A giant duck named after the donor |
| Chat command | /hooks/command | A little hay, once every 30 seconds |
Good to know
Name on chat commands
The widget only sends the name of the command: neither the viewer's name nor the text typed after it. The platform forbids redistributing chat messages from a marketplace widget.
Set the bits multiplier
Each bit adds hay straws based on the multiplier: 10 by default, so 500 bits add 5000 straws. Change it on the Settings page of the F8 menu (x1, x2, x5, x10 or x20) for the session, or with bitsMultiplier in settings of bridgeconfig.json to keep it. At most 300 straws fall on screen: the rest goes directly to the pile and the counter, so your game does not freeze. The bits workflow caps each event at 5000 straws.
Create channel points rewards
The points webhook picks the workflow from the title of the reward, in French or English. Create a Twitch reward whose title contains one of the words below: "Wind on the pile" runs points_gust. Case does not matter, and the first word found in the list in bridge\config.json wins.
| Word in the title | Effect | Cooldown |
|---|---|---|
hay | Hay delivery on the pile | 30 s |
duck | A duck named after the viewer, in a random size | 20 s |
fart | A synthesised fart that blows the hay around you | 30 s |
needle | False alarm: the detector beeps, "NEEDLE FOUND!", then "... nope." | 180 s |
launch | Throws you into the air | 60 s |
magnet | Loose hay rushes at you | 120 s |
levitat | Loose hay gently floats up | 120 s |
drunk | The camera sways | 180 s |
upside | The screen turns upside down | 180 s |
zoom | Extreme field of view | 120 s |
spin | Your view spins around | 90 s |
blackout | Black screen, with the viewer's name | 180 s |
wind | A gust of wind on the hay | 60 s |
Tip
Your needles never move
No effect moves a needle: losing one outside the map would end the game. Hay added by the mod can still cover it.
Control it from the F8 menu
| Page | What you do there |
|---|---|
| Effects | Trigger each effect with the mouse, with the name of your choice |
| Message | Write an on-screen message and choose its colour and duration |
| Activity | See the latest events and remove the ducks |
| Settings | Pause viewers, or turn on safe mode |
F9 removes all ducks at any time. Otherwise, a duck disappears after 3 minutes, or 15 minutes for those from subscriptions and donations. The settings on the Settings page last until the bridge restarts. To keep them, edit settings in bridge\config.json.
Show a message sent by LibertyTalk
The widget sends no message. To show one from LibertyTalk, create a workflow in Workflows with the Webhook / API call action to <tunnel address>/hooks/message, using the POST method, the X-Bridge-Token header and the body below. Messages show one after the other, 6 seconds each, and at most 20 wait for their turn.
{ "user_name": "{user_name}", "text": "Merci pour le follow !" }Warning
This text goes on your stream
The bridge displays the text as is. Write it yourself in the workflow, or have it moderated before sending. Do not connect the free text of a channel points reward without a filter.
Edit the bridge workflows
Workflows are in bridge\config.json, with the same syntax as Talky for Project Zomboid. Restart the bridge after a change. The example below sends hay based on multiplied bits, with a maximum of 2000 straws, and 5 ducks from 1000 bits.
"bits": {
"steps": [
{ "action": "hay_rain", "count": "{{bitsMultiplied | clamp:10:2000}}" },
{ "if": { "bits": { "gte": 1000 } },
"then": [ { "action": "duck", "name": "{{user}}", "count": 5, "size": 2 } ] }
]
}menu field adds a button on the Effects page: "menu": { "label": "My effect", "group": "hay" }.| Action | Parameters | Effect |
|---|---|---|
notify | text, seconds, color | On-screen banner |
message | text, author, seconds, color | Message panel, queued |
wait | seconds | Pause in the workflow |
hay_rain | count (100 000 max), on (pile, player), radius, height | Hay on the pile or around the player |
gust | strength, radius | Pushes nearby loose hay |
magnet, levitate | seconds (30 max), radius, speed | Loose hay rushes at the player, or floats up |
duck | name, size (8 max), count (30 max), seconds, on | Rubber duck, 40 at the same time at most |
clear_ducks | Removes all ducks | |
yeet | force (30 max) | Throws the player into the air |
spin | turns, seconds | Spins the view |
drunk, upside_down, quake_pro | seconds (30 max) | Camera effects |
blackout | seconds (10 max), text | Black screen with a text |
sound | name (fart, quack, beep), pitch, volume | Sound synthesised by the mod |
Limit abuse
In settings of bridge\config.json, maxJobsPerMinute caps viewer events (30 by default), blockedActions turns actions off and safeMode cuts safeModeBlocks, the effects on the player and the camera by default. Each workflow also accepts cooldownSeconds and userCooldownSeconds. The F8 menu and the fire command ignore these cooldowns and this cap so that you can test.
Tell LibertyTalk when a needle is found
Step 1
Create an incoming webhook
In LibertyTalk, create a workflow with the Incoming webhook trigger. It gives you a URL and a secret.
Step 2
Fill in the bridge target
In
bridge\config.json, replace thePASTE_...values ofhttpTargets.lt_report. The bridge refuses to call a target that still contains these values.Step 3
Enable the workflow
Set
enabledtotrueinreport_to_libertytalk, then restart the bridge. For each needle found, LibertyTalk receiveseventandneedlesFound, which your workflow can for example write in chat.
The game also sends needle_discovered and pile_replaced. Link them to your workflows in gameEvents.
Try it on your own community
Create a free account and follow the guide with your own networks.