
Yes, you can! See the “threshold” value/slider. It’s at 0.7 by default, which seems to be a good tradeoff. 1 means exact match or failure, 0 will afaik match anything to everything.
Ah, I didn’t see the Edit, so we’re both in the same boat 😂

Yes, you can! See the “threshold” value/slider. It’s at 0.7 by default, which seems to be a good tradeoff. 1 means exact match or failure, 0 will afaik match anything to everything.
Ah, I didn’t see the Edit, so we’re both in the same boat 😂

Finally got this through another comment below. No, this should not be able to happen, unless you yourself have created a custom intent + shell script action in home assistant that runs this. The integration itself does not execute actions/scripts or the like, it just finds the closest string in a list of strings, and then hands that to the official conversation agent/Hassil.

…do you think I’m a bot, or what is this?
Edit: ohh, that’s what the original comment was. Sorry. “lange leitung” today.

Please do! And if it does drive her crazy, please do open a bug report 😄

Yes, should be completely language agnostic. I’m not a linguist though, so take with a grain of salt 😅
There’s nothing language specific going on though, apart from a slight preference to split slots on word boundaries determined by spaces. So, might work a bit worse in e.g. Japanese.

❌ Sorry, I couldn’t understand that

Ahhh got it 😄 Yeah, I get/got similar stuff with Alexa. Honestly, the STT there is pretty impressive(ly fast), but sometimes it’s incredible nonsense.

I mean, you still need to activate the assistant with your usual wakeword. This/Hassil isn’t really intended to be constantly listening.
Or am I misunderstanding the question? 😅
Basically, STT quality has kept me from switching to HomeAssistant’s voice assistant features. The default matcher (Hassil) is waaaaaaay to strict, and LLMs are slow, constly, and/or a privacy nightmare, plus I don’t like them.
I really thought there would be something available that just matches your STT output to the configured intents, but apparently not, so I’ve built in myself.
Finally convinced my GF to throw Alexa in the bin :)
Here’s an excerpt from the README, and feel free to AMA:
Speech-To-Text (STT) output, especially fast and local STT output, is often simply bad. HomeAssistant’s own Hassil is incredibly picky: your STT output must match exactly to one of the configured intents.
There’s two paths forward from this: Upgrade your hardware to support better STT, or try to figure out what the speaker probably meant to say from the garbled output.
This project does the latter.
With this custom integration, “Lights on in live in room” will actually turn on the lights in your living room. So will, for that matter, “lighrts on inn livainriomm”.
Short demo, first with closest-intent, then with bare Hassil:

<expansion_rules>, (alternatives|to), and [optional|alternatives] all work, including on HASS-defined lists like your home’s areas and entities!{item} is a wildcard), and against slots like {timer_hours:hours} with a fixed set of possibilities.closest-intent simply corrects your STT output or typos to the closest matching intent, and then forwards a nice, canonical sentence to Hassil, who then deals with the intent just like if you had spoken/typed perfectly.Note:
closest-intentis completely language-agnostic. All the examples in thisREADMEare in English, but you can use it with any language you like; personally, I use it in German.
Here’s some examples of things I said, what my STT (wyoming-faster-whisper-base) understood, what HomeAssistant was able to do/answer after passing the STT output through closest-intent, and what the same STT output would have resulted in with just bare Hassil.
Note: These are actual results I got when speaking the “what was said” sentences in my phone. I’m a native German speaker, and so I do have an accent, but this pretty closely matches my experience when using the German-language version of whisper. The “bare Hassil” responses are what I got after 1:1 pasting the STT output into the voice assist chat window with
closest-intentdisabled.
| what was said | STT output | with Closest Intent | bare Hassil |
|---|---|---|---|
start cleaning |
Star cleaning. |
✅ Cleaning started. | ❌ Sorry, I couldn’t understand that |
stop cleaning |
Stop clenching! |
✅ Cleaning stopped. | ❌ Sorry, I am not aware of any device called clenching |
vacuum the living room |
Vacuum Believing Room |
✅ Cleaning the living room. | ❌ Sorry, I am unaware of any floor called Believing Room |
clean the office |
King the Office |
✅ Cleaning the office. | ❌ Sorry, there are multiple devices called Office (author’s note: no there aren’t, wtf?) |
vacuum the kitchen |
Back here in the kitchen. |
✅ Cleaning the kitchen. | ❌ Sorry, I couldn’t understand that |
how warm is it in the bedroom |
Our all is in the best room. |
✅ In the bedroom, the temperature is currently… | ❌ Sorry, I am not aware of any area called best room |
add milk to the shopping list |
Add milk to the chauvinist. |
✅ “milk” added. | ❌ Sorry, I am not aware of any device called chauvinist |
put call dentist on my todo list |
put call dentist on my tudu list |
✅ “call dentist” added. | ❌ Sorry, I am not aware of any device called tudu |
turn on the water pump |
turn on the what her pump |
✅ Turned on the water pump. | ❌ Sorry, I am not aware of any device called what her pump |
play some music |
Place on music |
✅ Playing music. | ❌ Sorry, I am not aware of any area called music |
resume the music |
Renew Music |
✅ Resuming. | ❌ Sorry, I couldn’t understand that |
pause the music |
Post music |
✅ Paused. | ❌ Sorry, I couldn’t understand that |
next track |
next rack |
✅ Next track. | ❌ Sorry, I am not aware of any device called rack |
enable shuffle |
an able shuffling |
✅ Shuffle enabled. | ❌ Sorry, I couldn’t understand that |
disable shuffle |
Disable to schaffen. |
✅ Shuffle disabled. | ❌ Sorry, I am not aware of any device called Disable |
restart the player |
Reset the plan. |
✅ Restarting the player. | ❌ Sorry, I am not aware of any area called Reset |
play a random album |
Player random album |
✅ Playing a random album. | ❌ Sorry, I couldn’t understand that |
play a random artist |
Player and Immartist. |
✅ Playing a random artist. | ❌ Sorry, I couldn’t understand that |
play the latest tracks |
Plan the ladder tracks. |
✅ Playing recently added tracks. | ❌ Sorry, I am not aware of any area called Plan |
play recently played songs |
Player recently played so... |
✅ Playing recently heard tracks. | ❌ Sorry, I couldn’t understand that |
play playlist NieR |
Play playlist NEAR! |
✅ Playing the playlist NieR. | ❌ Sorry, I couldn’t understand that |
play my daily briefing |
and play my daily breathing |
✅ Here is your daily briefing: … | ❌ Sorry, I am not aware of any area called and play |
what time is it |
What the hell is it? |
✅ It is 16:36. | ✅ It is 16:36. (author’s note: okay, know what? earned. did not expect that.) |
what day is it today |
One day is today. |
✅ Today is Friday. | ✅/❌ May 8th, 2026 (author’s note: that’s the output for “What date is it?”, but, eh, close enough) |
make the tv brighter |
Make that CV brighter. |
✅ Screen is now bright. | ❌ Sorry, I couldn’t understand that |
set the screen darker |
The screen doctor. |
✅ Screen is now dark. | ❌ Sorry, I am not aware of any device called screen doctor |
what's the weather today |
What's the matter with you? |
✅ Today, the weather is… | ❌ It is 16:36. (author’s note: wait, WHAT?) |
how's the weather tomorrow morning |
How's the better tomorrow? |
✅ Tomorrow morning, it will be… | ❌ Sorry, I am not aware of any area called How’s |
what's the weather this week |
What's the matter this weak |
✅ Monday:…, Tuesday:…, | ❌ It is 16:36. (author’s note: sigh…) |
how's the weather at 5 o'clock |
cast the red there at 5 o'clock |
✅ At 5 o’clock, it will be… | ❌ Sorry, I am not aware of any area called cast |
how windy is it right now |
how windy is IR low |
✅ The wind is currently blowing with… | ❌ No timers. |
how windy will it be tonight |
How will you be tonight? |
✅ Tonight, the wind speed will be around… | ❌ Sorry, I couldn’t understand that |
how hot will it get today |
How hard will it get today? |
✅ Today, temperatures will reach up to… | ❌ Sorry, I couldn’t understand that |
will it rain today |
with it right today |
✅ No rain is expected today. | ❌ Sorry, I couldn’t understand that |
…you get the idea.
closest-intent is registered in HomeAssistant as a conversation agent.
On startup, it parses (by default) all user-defined intents (or optionally, also the builtins ones). In this process, it also expands all rules, like <expansion_rule>, (alternatives|to), and [], and notes where {slots} are located, and whether they are wildcards or belong to some list (like areas, entities, or the numbers 1-100).
When a user request comes in (via voice command or the chat box), closest-intent fuzzy-matches that request against those expanded rules.
If the rule does not contain a slot, it is picked immediately.
If it does contain a slot, closest-intent performs a sequence of fancy magic steps to find the best-fitting slot value among a range of possible positions within the top-scoring matched sentences.
In practice, this often means “smallest slot-value on a word-boundary”, but the extraction is not limited to that.
With the best match found, we then reconstruct the “canonical form”, i.e. a sentence that Hassil will actually understand.
If in your configured intents, “Play some music.” exists, and closest-intent got “Place on music” and matched that to the intent,
it will simply forward “Play some music.” to Hassil. If the intent contained a slot, the extracted value will be substituted.
This guarantees that the sentence passed to Hassil will actually be understood, and allows us to not have to worry at all about performing actions, running scripts,…
If no matching intent could be found, we pass the exact input we got to the configured fallback agent. By default, that is simply Hassil (which again allows us to be lazy and not worry about proper error responses), or another agent, like a LLM.

Neovim, configured entirely through nixvim. I always liked neovim, but it’s never been as incredibly stable as now with nixvim.
Main/only IDE both in private and at work. Can’t ever go back, muscle memory has ensured that.
I think the text is somewhat dubious in its arguments, but this (and the arguments built on this assertion) is just plain wrong:
[Signals servers have] a few important pieces of data;
Message dates and times Message senders and recipients (via phone number identifiers)
Signal clients implement the Pond protocol. As a result, Signals servers know who a message is for (obviously, how else do you get the message) but cannot know who it is FROM.
I’ve been playing around with implementing a secure/private messenger demo for myself, and have been consistently impressed with how privacy preserving Signal is when reading their papers and code. I wish it was selfhostable, but apart from that, it’s great.
The server would be NICE to be OSS, but ultimately, privacy breaches are prevented client/protocol side.
This doesn’t make a call to government servers.
The app (or desktop application BTW, incl. Linux) reads your national ID’s NFC tag, once. When you need to prove your age, the app locally computes a zkp that only tells the site “at least 18yo yes/no”.
Note that every EU country has a form of national ID, and the digital capabilities of these IDs are already used for a bunch of stuff (e.g. taxes, bank account creation,…). This doesn’t worsen the privacy situation for EU citizens, but instead ensures that no privacy-unfriendly solutions emerge.
If you use nixos, you basically have to know/learn/use day-to-day the nix language.
nixpkgs are written using nix the language, using concepts mostly familiar from just using nixos.
Basically everyone using nixos is capable of contributing packages.
Just gonna leave this here

Did they still not release the actual torrents though?

And why would they implement it in a somewhat private manner if it could be implemented in a privacy-infringing manner?
I honestly don’t think most democratic governments have an interest in making this privacy-infringing. Lobbyists/companies on the other hand… But all the more reason to write legislation that ensures age verification must be handled like this.
That already tells the government that I’m accessing porn because why else would I need to confirm I’m an adult online?
Cinema rickets for FSK18 movie? Ordering alcohol? Gambling? Renting a car?
Basically anything you’re only allowed to do as an adult.
But that’s kind of why I mentioned, it’s just one rough draft for such a protocol.

It should be Dot Dot! But it’s Dot Dot Dot! - sanest Bitchard moment
Awesome!! And thanks for actually letting me know! :D
Edit: anything for the wishlist?