Skip to content

Releases: YuriKovalov22/the-finn

v1.0.1: English only, and shorter

Choose a tag to compare

@YuriKovalov22 YuriKovalov22 released this 08 Sep 16:00

Same day as 1.0, because the day did not end where the tag was.

the-finn-greeting-square.mp4

English only. The first Hacker News thread said the Finn is offended by the idea that he would speak Russian, and he agreed. The coin toss, FINN_LANGS, the Russian style block, every Russian example in the character prompt and the bot's own Russian replies are gone. He answers in English whatever you write to him in.

Six parts Gibson, four parts pirate, one sentence. The voice was all sailor with Gibson as a footnote. Now the Sprawl fence leads and the pirate is the mouth on him. Length is a rule of its own: one sentence under 20 words when he speaks first, a second only when the first cannot carry the fact. Six Sprawl-shaped greeting angles join the ten that were there.

The voice no longer dies in silence. When the speech API refuses (the account ran out of credits) it answers with a small JSON body; that used to be handed to the speaker and played as nothing, and the speaker looked dead. Now anything that is not a WAV is logged with the API's own message and the pip plays instead.

Local model, for real. qwen3:8b on a 16 GB M1 iMac through Ollama was auditioned on live sensors. It holds the shape and invents the numbers. Ollama's OpenAI endpoint ignores think=false, so the local token budget is 2500 and an answer eaten by reasoning is logged for what it is. The README says all this instead of guessing about model sizes.

Two places to talk. What did your Finn say today? for his remarks from your wall, Ports and hardware for routers not on the list.

Also: tick.sh say keeps its remarks in said.log too, and the repo now has a card when the link is shared.

v1.0.0: eleven days on the wall

Choose a tag to compare

@YuriKovalov22 YuriKovalov22 released this 08 Sep 13:23

Eleven days on a wall, 42 commits, and he has stopped changing shape. Calling it 1.0.

What he is. A resident of your OpenWrt router. Every minute the box reads itself and the room, keeps a rolling range per sensor in RAM, and only asks a model to speak when something has left its own recent range. No list of events, no assistant, one Telegram id.

New in this release

  • A brain on your own network. FINN_PROVIDER=local points him at any OpenAI-compatible server on the LAN (llama.cpp, Ollama, vLLM, LM Studio). No key on the router, and he keeps talking with the uplink cut.
  • tick.sh think "..." asks the brain in character and prints the answer, nothing posted. Audition a model before trusting it with his voice.
  • tick.sh said prints every remark in full from a new said.log. The event log had been cutting them at 160 bytes.
  • Platform table in the README: what he runs on, what he probably runs on, and what would be a port rather than a config change (MikroTik, OPNsense).
  • Nine of his own remarks in the README, verbatim.

Since the first public commit

  • Traffic rationed to one remark in six hours, and variety enforced by kind, theme and shape so six oddities do not read as the same sentence.
  • Presence debounced, so a phone in a pocket is not a person leaving every four minutes.
  • Per-device throughput checked against the uplink total and withheld when hardware NAT offload makes the counters lie.
  • Fleet watchdog: the router is the one vantage point outside your server's blast radius, and an outage is the one thing allowed past quiet hours.
  • Owner greeting after an hour away, a different angle every time.
  • A port dictionary, so STUN is called STUN and an unknown port is called unknown.
  • Voice through a USB speaker, with a real volume control.

Install: git clone, fill in env, ./install.sh root@192.168.8.1. Ten minutes. MIT.