I turned Unix talk from 1983 into the interface for my AI
:quality(85)/https://andros.dev/media/thumbnails/emilipothese-LEPhZkQbUrk-unsplash.jpg)
After writing yesterday's article about the talk command, I realized there is a poetic bond between the past and the future: `talk` transmits character by character, and an LLM emits token by token in streaming. It is candy for any programmer.
So I built a little bridge. If someone runs `talk ai@host-where-the-ai-lives` from the VPN, an AI answers on the other side.
Cool, don't you think?
The architecture
The trick is to sit in the middle. The server runs the real `talk` inside a pseudo-terminal (PTY) and reads the human's half with a terminal emulator (pyte), which turns `talk`'s output into a virtual screen I can query. When the human presses Enter, that line is sent to the model, and the reply comes back injected character by character as it arrives in streaming. They fit without friction.
flowchart LR H["Human talk ai@host split screen, live"] subgraph VPN["Server"] D["talkd (inetd)"] B["bridge.py pyte reads the human Enter = end of turn types the AI live"] end P["An AI API"] H <-->|"UDP 518, ntalk (negotiation)"| D H <-->|"direct TCP (text stream)"| D D -->|PTY| B B -->|"request"| P P -.->|"response (streaming)"| B
So that `talkd` recognizes the AI as just another user, the container registers its terminal in `utmp` on startup. Without that detail, a `talk ai@host` would reply "not logged in".
It is just a toy
Watching it work is strange and beautiful in equal parts: a technology more than forty years old, revived by a VPN, now talking to a language model that types just like a human would on the other side. It could surely go further, but it is only a silly experiment that made me smile.
- The architecture
- It is just a toy
- ai
- videojuegos
- python
- terminal
- experiencia
- streamlit
- ai
- web
- html5
- css3
- ai
:quality(85)/https://andros.dev/static/img/components/license/by-nc-nd.png)
This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.
How did I use AI in this article?
Do you want to read what I never publish?
I send what does not fit in the articles: full configurations, messy notes and whatever I am testing right now. No spam, no sales funnels.
Send an email to newsletter@andros.dev with the subject SUBSCRIBE and you are in.
To unsubscribe, send UNSUBSCRIBE to the same address.
Help me keep writing
Every coffee gives me a push toward the next article.
Comments
Leave a comment
There are no comments yet.
You may also like
[](https://en.andros.dev/blog/4cd80676/what-does-an-ai-admire-about-the-human-race/) :quality(85)/https://andros.dev/media/thumbnails/ai_thumbnail_a01eabd9.png)
What does an AI admire about the human race?
2 July 2026 [](https://en.andros.dev/blog/b5ba872a/making-uis-like-text-adventure-games/) :quality(85)/https://andros.dev/media/blog/2026/04/spectrum-text-adventure.png)
Making UIs like text adventure games
27 April 2026 [](https://en.andros.dev/blog/58441321/building-technical-cathedrals-for-an-audience-that-no-longer-visits-webs/) :quality(85)/https://andros.dev/media/thumbnails/ai_thumbnail_56952647.png)
Building Technical Cathedrals for an Audience That No Longer Visits Webs
17 February 2026
Sure, it's on me!