{"slug": "i-turned-unix-talk-from-1983-into-the-interface-for-my-ai", "title": "I turned Unix talk from 1983 into the interface for my AI", "summary": "A developer built a bridge that lets users chat with an AI through the 1983 Unix talk command, using a pseudo-terminal and the pyte terminal emulator to stream responses token by token. The project, described as a toy experiment, connects talk's character-by-character transmission to an LLM's streaming output, with the AI registered in utmp so talkd recognizes it as a user.", "body_md": "# I turned Unix talk from 1983 into the interface for my AI\n\nAfter writing [yesterday's article about the talk command](/blog/03a4ffb9/talk-the-p2p-chat-from-1983-that-a-vpn-brought-back-to-life/), I realized there is a poetic bond between the past and the future:\n\n`talk`\n\ntransmits 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`\n\nfrom the VPN, an AI answers on the other side.\n\nCool, don't you think?\n\n## The architecture\n\nThe trick is to sit in the middle. The server runs the real `talk`\n\ninside a pseudo-terminal (PTY) and reads the human's half with a terminal emulator ([ pyte](https://github.com/selectel/pyte)), which turns\n\n`talk`\n\n'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.\n\n```\nflowchart LR\n    H[\"Humantalk ai@hostsplit screen, live\"]\n    subgraph VPN[\"Server\"]\n        D[\"talkd(inetd)\"]\n        B[\"bridge.pypyte reads the humanEnter = end of turntypes the AI live\"]\n    end\n    P[\"An AI API\"]\n    H <-->|\"UDP 518, ntalk (negotiation)\"| D\n    H <-->|\"direct TCP (text stream)\"| D\n    D -->|PTY| B\n    B -->|\"request\"| P\n    P -.->|\"response (streaming)\"| B\n```\n\nSo that `talkd`\n\nrecognizes the AI as just another user, the container registers its terminal in `utmp`\n\non startup. Without that detail, a `talk ai@host`\n\nwould reply *\"not logged in\"*.\n\n## It is just a toy\n\nWatching 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.\n\nThis work is under a [Attribution-NonCommercial-NoDerivatives 4.0 International license.](https://creativecommons.org/licenses/by-nc-nd/4.0/)\n\n## Help me keep writing\n\nEvery coffee gives me a push toward the next article.\n\n## Comments\n\nThere are no comments yet.", "url": "https://wpnews.pro/news/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai", "canonical_source": "https://en.andros.dev/blog/09a21bdd/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai/", "published_at": "2026-08-22 08:14:41+00:00", "updated_at": "2026-08-22 08:43:36.465380+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-tools", "developer-tools"], "entities": ["Unix talk", "pyte", "VPN"], "alternates": {"html": "https://wpnews.pro/news/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai", "markdown": "https://wpnews.pro/news/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai.md", "text": "https://wpnews.pro/news/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai.txt", "jsonld": "https://wpnews.pro/news/i-turned-unix-talk-from-1983-into-the-interface-for-my-ai.jsonld"}}