The ChatGPT window is ordinary software: a list of chats, streaming replies, file uploads and a model picker. An agent builds that over the OpenAI API in one sitting, and Open WebUI or LibreChat already do it for free. What no prompt builds is the model, so you keep paying OpenAI, only per token instead of per month; for light and medium use that usually comes to less than $20. The gaps are voice mode, the phone apps, deep research and the agent, which are exactly why many people keep Plus.
Before you buildLook at ChatGPT Free and Go ($8) first: Free already gives unlimited text chats on the base model, and Go raises the caps on uploads, images and memory.
Build me a private chat app to replace ChatGPT Plus. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves everything on http://127.0.0.1:4700. - Two providers behind one interface: OpenAI through the official `openai` package (OPENAI_API_KEY and a comma-separated OPENAI_MODELS list in .env), and every model already pulled in Ollama on localhost:11434. Pick a model per chat. - Streaming replies with Markdown and code highlighting (shiki), a stop button, regenerate, and edit-a-message to fork the chat from that point. - Storage: better-sqlite3 in ./data/chats.db (chats, messages, model, tokens); uploads in ./data/uploads/. Text and PDFs are sent as text, images as images. Full-text search over every chat with SQLite FTS5. - Projects: a folder of chats sharing one system prompt and a few pinned files. - Cost meter: prices per model in ./prices.json; show the cost of each reply and a monthly total, and block sending once MONTHLY_CAP_USD from .env is reached. - Import my ChatGPT export: find the conversations JSON in the ZIP, print its structure and a chat count first, then add every chat with its title and date. Running the import twice must not create duplicates. - Single user, no accounts, no telemetry, local-first; listen on 127.0.0.1 only. - Out of scope: voice mode, image generation, web browsing, phone apps. - README: setup, where the data lives, and a plain note that the models are still OpenAI's, so every message sent to them is billed per token.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own ChatGPT Plus.
Add a web search tool to the chat app in this folder. Requirements: - Use the Brave Search API (BRAVE_API_KEY in .env), or a SearXNG URL from .env if one is set instead. - Expose it to the model as a function call; the model decides when to search. At most 3 searches per reply. - Fetch the top 3 result pages, strip them to text with @mozilla/readability, and list every source used as a numbered link under the reply. - A per-chat toggle turns search off; Ollama models get it only if they support tool calls. - Out of scope: logging in to sites or clicking through pages. - Update the README with the Brave pricing and free-quota link.
Add push-to-talk voice to the chat app in this folder. Requirements: - Hold the space bar (or a mic button) to record in the browser with MediaRecorder; release to send. - Transcribe with the OpenAI transcription endpoint, or with a local whisper.cpp server if WHISPER_URL is set in .env. - Read replies aloud with the OpenAI text-to-speech endpoint, sentence by sentence as they stream, with a stop button. - Show the transcript as a normal message so the chat history stays readable. - Out of scope: interrupting the voice mid-sentence by speaking. - Update the README with the per-minute costs from the OpenAI pricing page.
Add image generation to the chat app in this folder. Requirements: - A /image command and an "image" button send the prompt to the OpenAI Images API; the model name comes from IMAGE_MODEL in .env. - Edits: attach an image plus instructions to change it. - Save every result to ./data/images/YYYY-MM/ with a JSON sidecar holding the prompt, model, size and cost, and show the cost under the image. - Images count toward the monthly cap from .env. - Update the README with the current per-image price.
Add memory to the chat app in this folder. Requirements: - A memories table in ./data/chats.db: id, text, created, last used. - The model gets a save_memory tool. Every proposed memory shows as a card I approve or reject; nothing is saved without a click. - Approved memories go into the system prompt of new chats, newest first, capped at 1,500 tokens. - A settings page lists all memories with edit and delete. - A per-chat "no memory" toggle for private chats. - Update the README.
Make the chat app in this folder usable from my phone. Requirements: - A responsive layout below 640px wide: chat list in a drawer, full-width input. - A web app manifest and icons so it installs to the home screen. - Reach it over Tailscale: the server keeps listening on 127.0.0.1 and the README explains `tailscale serve` to expose it to my devices only. - Never listen on 0.0.0.0 and add no login of its own. - Update the README with the Tailscale steps.
For $20 people get OpenAI's newest models plus voice, images, deep research, an agent and Codex behind one login on every device, with no per-message bill to watch. Years of chat history and the memory built from it make leaving feel like starting over.
Estimate · Local models through Ollama cost only electricity. On the API, a typical reply from GPT-6.1 Sol ($2 in, $10 out per million tokens) costs about a cent, so 30 messages a day is roughly $9 a month; long files or the top model, GPT-6 Astra ($10 in, $50 out), can push it past $20. The build session is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Unlimited text chats on the base model; limited uploads, image creation, deep research and Codex; 27K-token context for quick replies. |
| Go | $8 | — | More messages, uploads and images than Free, longer memory, 54K context for quick replies and 256K for reasoning; no access to the top reasoning models. |
| Plus | $20 | — | Every current model including the advanced reasoning ones, expanded deep research and Codex, image creation with thinking, projects, scheduled tasks and custom GPTs. |
| Pro | $100 | — | Three usage levels at $100, $200 and $500 a month: the pro reasoning model, near-unlimited use of most models, the always-on Dot agent, 400K context. |
| Business | $25 | $20 | Teams of 2 to 200 with a shared workspace and admin settings; premium seats with more usage cost $125 monthly or $100 a month yearly. |
| Enterprise | custom | — | — |
The free plan allows unlimited text chats on the base model, but uploads, image creation, deep research and Codex are capped and memory is short.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Advanced voice mode and the phone apps, Deep research, the agent and Codex under one subscription.
About $20 a month on the Plus plan, $240 a year (checked 2026-10-13).
Advanced voice mode and the phone apps; Deep research, the agent and Codex under one subscription; Memory that carries across chats without you managing it; Image creation and editing inside the chat; A flat price: heavy daily use can cost more than $20 on the API. If any of those matter to you, keep paying.
Yes: Open WebUI (free), LibreChat (open source), Jan (open source).