Skip to content
LibertyTalk
Game integrations

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.

  1. Trigger

    Twitch follow

    Bob follows your channel.

  2. Action

    LibertyTalk widget

    Sends {"user_name":"Bob"} to the bridge, through the tunnel.

  3. Outside LibertyTalk

    Bridge on your PC

    Runs the new_follower workflow.

  4. 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.

Part 1

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.
powershell
winget install OpenJS.NodeJS.LTS
winget install --id Cloudflare.cloudflared
Close and reopen the terminal after installing, so that node and cloudflared are recognised.

Get Talky Needle

Install

  1. 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.

  2. 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.

  3. Step 3

    Run the install script

    Open a PowerShell terminal in the TalkyNeedle folder and run the command below. The script copies mods\talky_needle next to FindTheNeedle.exe and adds a TalkyNeedle line to override.cfg. It keeps a copy of this file as override.cfg.talky-needle.bak.

powershell
powershell -ExecutionPolicy Bypass -File tools\install.ps1
The script looks for the game in the default Steam folder, steamapps\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.

text
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...
What the bridge prints on first start, after the time.

Open the F8 menu and test

  1. 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.

  2. Step 2

    Press F8

    The Talky Needle window opens, with Bridge connected at the top right. F8 or Esc closes it.

  3. 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:

powershell
node bridge.js fire new_follower user=Bob

Open 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.

powershell
cloudflared tunnel --url http://127.0.0.1:7421

Warning

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.

  1. 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.

  2. Step 2

    Fill in its settings

    Enter the three fields in the table below, then click Save.

  3. Step 3

    Enable it

    In the Activation block, click Enable.

FieldValue
Bridge public URLThe tunnel address, with no trailing /
Bridge tokenThe 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
Check that 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"
Run start-bridge.cmd and leave its window open. The mod reconnects by itself every two seconds.
The bridge prints warning: hooks missing
A game update moved what the mod relies on. The affected effects do nothing until a new version of the mod comes out: the others keep working.
The bridge prints gust failed: nothing_nearby
The wind found no loose hay around you, so nothing moved. In your workflows, place a hay_rain with "on": "player" right before the gust.
LibertyTalk calls the bridge, but nothing happens in the game
The bridge keeps events until a game is loaded, for 15 minutes at most. Also check that Pause viewers is off on the Settings page of the F8 menu.
How do I uninstall?
Close the game, then run tools\install.ps1 -Uninstall. The script removes the line from override.cfg and the mods\talky_needle folder.
Part 2

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

EventWebhookIn-game effect
Follow/hooks/followA small duck named after the viewer
Subscription/hooks/subA giant duck, larger with the tier, that stays 15 minutes
Gifted subscriptions/hooks/giftA rain of ducks, one per subscription, 30 at most
Bits/hooks/bitsHay on the pile: at x10, 500 bits add 5000 straws. From 1000 bits, a giant duck as well
Raid/hooks/raidA hay avalanche, ducks, and you get thrown
Donation or Super Chat/hooks/donation, /hooks/superchatA giant duck named after the donor
Chat command/hooks/commandA 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 titleEffectCooldown
hayHay delivery on the pile30 s
duckA duck named after the viewer, in a random size20 s
fartA synthesised fart that blows the hay around you30 s
needleFalse alarm: the detector beeps, "NEEDLE FOUND!", then "... nope."180 s
launchThrows you into the air60 s
magnetLoose hay rushes at you120 s
levitatLoose hay gently floats up120 s
drunkThe camera sways180 s
upsideThe screen turns upside down180 s
zoomExtreme field of view120 s
spinYour view spins around90 s
blackoutBlack screen, with the viewer's name180 s
windA gust of wind on the hay60 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

PageWhat you do there
EffectsTrigger each effect with the mouse, with the name of your choice
MessageWrite an on-screen message and choose its colour and duration
ActivitySee the latest events and remove the ducks
SettingsPause 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.

json
{ "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.

json
"bits": {
  "steps": [
    { "action": "hay_rain", "count": "{{bitsMultiplied | clamp:10:2000}}" },
    { "if": { "bits": { "gte": 1000 } },
      "then": [ { "action": "duck", "name": "{{user}}", "count": 5, "size": 2 } ] }
  ]
}
A workflow's menu field adds a button on the Effects page: "menu": { "label": "My effect", "group": "hay" }.
ActionParametersEffect
notifytext, seconds, colorOn-screen banner
messagetext, author, seconds, colorMessage panel, queued
waitsecondsPause in the workflow
hay_raincount (100 000 max), on (pile, player), radius, heightHay on the pile or around the player
guststrength, radiusPushes nearby loose hay
magnet, levitateseconds (30 max), radius, speedLoose hay rushes at the player, or floats up
duckname, size (8 max), count (30 max), seconds, onRubber duck, 40 at the same time at most
clear_ducksRemoves all ducks
yeetforce (30 max)Throws the player into the air
spinturns, secondsSpins the view
drunk, upside_down, quake_proseconds (30 max)Camera effects
blackoutseconds (10 max), textBlack screen with a text
soundname (fart, quack, beep), pitch, volumeSound 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

  1. Step 1

    Create an incoming webhook

    In LibertyTalk, create a workflow with the Incoming webhook trigger. It gives you a URL and a secret.

  2. Step 2

    Fill in the bridge target

    In bridge\config.json, replace the PASTE_... values of httpTargets.lt_report. The bridge refuses to call a target that still contains these values.

  3. Step 3

    Enable the workflow

    Set enabled to true in report_to_libertytalk, then restart the bridge. For each needle found, LibertyTalk receives event and needlesFound, 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.

To build your workflows on the LibertyTalk side.Workflows in depthHow the engine runs a workflow: triggers, variables, conditions, webhook calls, testing and widgets, with the traps that break a scenario without any error message.Read the guide

Try it on your own community

Create a free account and follow the guide with your own networks.

Ask on Discord