Twitter Bio is a 160-character form, one Together AI call, and a good demonstration of streaming
Generate your Twitter bio with AI
At a glance
- What is it?
- A small Next.js app that builds a prompt from a short form and streams a bio back from Qwen 3.5 9B and GPT OSS 20B, and that has not been touched since late June 2026.
- Who is it for?
- Read as a product, this repository is finished: it does one thing, the thing works, and the README is honest that an older GPT 3.5 version exists if you want the history. Read as a reference, it is still useful, and the parts worth lifting are the streaming path and the way two models with different latency profiles are combined behind one indicator.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 107 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two models, chosen for opposite latency behaviour
The README's explanation of how it works is short enough to quote nearly in full, and it contains a design decision that is worth isolating. The app uses Qwen 3.5 9B with thinking disabled for fast direct responses, and GPT OSS 20B as a reasoning model that thinks before responding, surfaced in the UI with a Thinking indicator.
That pairing is the interesting part. One model is selected precisely for not deliberating, and the other is selected precisely for deliberating, and the interface makes the difference visible rather than hiding it. A user who picks the reasoning model waits and sees why; a user who picks the fast model gets an answer immediately. The same form and the same rendering path serve both.
The pipeline itself is conventional and worth stating plainly because the README does: construct a prompt from the form and the user's input, send it to the Together AI API, stream the response back to the application. Both model links point at Together AI's own playground, which is a small detail that tells you the model choice is hosted-service-dependent rather than baked into anything local.
There is no prompt engineering visible in the README, no template, and no examples of input or output. Whatever makes the bios good lives in code that the repository description does not surface, and that is the main gap for someone hoping to study the prompting.
A dependency list that has not moved since the Next 14 era
`package.json` describes a conventional Next.js application and nothing more. Three scripts, `dev`, `build`, and `start`, all thin wrappers around Next commands. No test runner, no linting script, no type-check script, and no CI configuration referenced in the README.
The versions are where the age shows. Next is pinned at `^14.2.16` and React at an exact `18.3.1`, with `react-dom` matching. TypeScript is `5.6.3` and Tailwind is `^3.4.14`, both from the same period. If you clone this today, the first thing you will do is move Next to a current major and React to a current version, and the pin on React means that will be an explicit edit rather than a range that floats.
Two entries are worth calling out because they explain features the README does not describe. `react-hook-form` at `^7.53.1` is the form layer, and `react-use-measure` at `^2.1.1` exists to size an element to its content, which in a streaming bio generator is almost certainly the character counter. `react-hot-toast` handles errors, and `next-plausible` is analytics.
The Together AI client is listed as `together-ai` at `^0.6.0`. That package name is from before the AI SDK convention took over, so a modern version of this app would reach for the provider package under the AI SDK instead. The one-line `.env.example` containing `TOGETHER_API_KEY=` confirms that this single variable is the entire configuration surface.
Local setup is two steps, and the package manager is inconsistent
The Running Locally section is two numbered steps. Create a `.env` file, make an account at Together AI, and put your key under `TOGETHER_API_KEY`. Then run `npm run dev` and the app is at `http://localhost:3000`.
That is genuinely the whole setup, and it works because there is no database, no authentication, no queue, and no build step to configure. The repository tree is thirteen entries and contains `.env.example`, `.gitignore`, `LICENSE`, `README.md`, `app/`, `components/`, `public/`, four config files (`next.config.js`, `postcss.config.js`, `tailwind.config.js`, `tsconfig.json`), `package.json`, and `pnpm-lock.yaml`.
The inconsistency worth flagging is between the lockfile and the instructions. The tree ships `pnpm-lock.yaml` and `package.json` declares `[email protected]` as the package manager, so the intended workflow is pnpm. The README says `npm run dev`. In practice the `run` verb works identically under either, but `npm install` against a pnpm lockfile will resolve fresh versions rather than the pinned ones, which for a project this old means you may not get the Next 14 line the code was written against.
The UI stack is visible in the dependencies rather than the README: Headless UI, Heroicons, and `@tailwindcss/forms`. That combination, unstyled components plus an icon set plus a forms plugin, is the standard Tailwind approach and explains how the app stays small without a component library.
A deploy button that only asks for one variable
The one-click deploy is a good demonstration of what a small AI app should ask a deployer for. The Vercel button's clone URL carries a single environment variable, `TOGETHER_API_KEY`, and names the project `twitter-bio-generator`.
That is the entire configuration contract, and it is possible only because nothing else in the app needs to persist. There is no user table, no session, no rate limiter backed by storage, and no per-account key management. Every visitor shares the one API key on the deployed instance, which is fine for a demonstration and would be the first thing to change if the app had traction.
The README also links an older build of this app explicitly, offering a video and a Vercel blog post about how a previous version was made with GPT 3.5 on Next.js and Vercel Edge Functions. Reading that as a maintainer, it is an explicit note that the current version is a rewrite rather than an increment: the model provider, the models, and the streaming presentation all changed since that walkthrough.
It is also the clearest signal of what this repository is for. The homepage is twitterbio.io, the description is four words, and the repository exists to be deployed and read as a pattern for streaming model output into a form-driven UI.
What the repository metadata does and does not tell you
The descriptive fields are thin in a way that is consistent with a small deployed app. The description is simply Generate your Twitter bio with AI. The homepage is `https://www.twitterbio.io`. The language is TypeScript and the license is MIT, with the license field matching a `LICENSE` file at the root, so there is no ambiguity to resolve there.
Two numbers are more informative. The repository has roughly 1,770 stars and roughly 487 forks, which is the shape of a project people clone to deploy their own version rather than consume as a dependency. There is nothing to install into an application here; there is a thing to run.
The 28 open issues are worth noting against the last recorded push of 2026-06-26. That combination, a project with real adoption and a visible backlog that has not moved in a few months, is the signature of a maintained-then-parked repository rather than an abandoned one. Anyone planning to fork it should plan to update dependencies themselves, because that is not something the maintainer is currently doing.
The honest summary is that this is a complete small application, not a library and not a framework. Its value to a reader is as a compact, complete example of streaming a model response into a form-driven interface, including the detail that a reasoning model needs its own UI affordance because it is measurably slower.
Editorial conclusion
Read as a product, this repository is finished: it does one thing, the thing works, and the README is honest that an older GPT 3.5 version exists if you want the history. Read as a reference, it is still useful, and the parts worth lifting are the streaming path and the way two models with different latency profiles are combined behind one indicator. Two things to know before you build on it. The dependency set is from the Next 14 era with `react` pinned at 18.3.1 and the Together AI client still named `together-ai`, so expect to update both when you adopt it. And the last recorded push is 2026-06-26, which means the app is deployed and working while the dependency surface ages. Start from `.env.example`, which holds the single variable the whole app needs.
Frequently asked questions
What does the Twitter Bio app use to generate bios?
It uses Together AI with two models. Qwen 3.5 9B runs with thinking disabled for fast direct responses, while GPT OSS 20B is a reasoning model that thinks before answering and is shown with a Thinking indicator. The response is streamed back to the browser.
How do I run the Twitter Bio project locally?
Create a `.env` file with a Together AI key under `TOGETHER_API_KEY`, then start the dev server. The README says `npm run dev` and the app is served at `http://localhost:3000`. Note that the repository ships `pnpm-lock.yaml` and declares pnpm as its package manager, so installing with npm will resolve fresh versions rather than the pinned ones.
Does Twitter Bio store any user data?
Nothing in the repository suggests it does. There is no database, no authentication, and no per-user key storage, so the deployed app runs against a single shared Together AI key passed as the `TOGETHER_API_KEY` environment variable. That is fine for a demonstration and would need rework under real traffic.
Is Twitter Bio still maintained?
The recorded last push is 2026-06-26 and there are 28 open issues, which reads as a maintained and then parked project rather than an abandoned one. The dependencies sit in the Next 14 and React 18.3.1 era, so a fork should expect to update Next, React, and the Together AI client before shipping.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/nutlope-twitterbio)