{"course":{"slug":"choosing-your-tools","title":"Choosing and Using the Tools","url":"https://addaly.com/learn/choosing-your-tools","level":"beginner","track":"work"},"lesson":{"slug":"free-front-ends","title":"Building your own chat app for nothing","url":"https://addaly.com/learn/choosing-your-tools/free-front-ends","position":23,"of":76,"minutes":8,"answer":"A free open-source front-end turns an API key into a chat application you control (your system prompt, your stored history, several providers and a local model in one window) at the cost of polish.","keyIdea":"A free open-source front-end turns an API key into a chat application you control (your system prompt, your stored history, several providers and a local model in one window) at the cost of polish, built-in extras and support."},"body":{"format":"markdown","text":"## The gap the API leaves\n\nAn API key gives you models and no product. A free, open-source front-end fills that gap, and the result is a chat application you control: your system prompt, your model choice, your conversation history stored where you decide.\n\nFour are worth knowing, all free and open source:\n\n- **Open WebUI**: the most complete. Runs in a browser, supports multiple providers and local models at once, has document upload with retrieval, web search and multi-user accounts. Installed with one Docker command.\n- **LibreChat**: similar scope, strong on multi-provider setups, plugins and organisational use.\n- **Chatbox**: a simple desktop application. Install it, paste a key, use it. The easiest starting point by a distance.\n- **Jan**: a desktop app built around running models locally, which also accepts remote keys.\n\n## What you gain\n\n**Every model in one window.** Switch between providers mid-conversation. This is the fastest way to build the two-tool habit, because a second opinion is one dropdown away rather than another tab and another login.\n\n**Your own system prompt.** Set it once (how you want to be addressed, what you do, spelling conventions, how long answers should be) and it applies everywhere, on every model, without a company's instructions competing with yours.\n\n**Conversations that are yours.** Stored in a database on your machine or your server. Exportable, searchable, backed up by you, not deleted when a subscription lapses.\n\n**Cost visibility.** Most of these show token counts and running spend per conversation. Seeing the number after each message changes how you use the tool within a week.\n\n**A local model beside a frontier one.** The same window, one dropdown apart. Confidential material goes to the local one; everything else goes wherever is best. Nothing about this arrangement requires you to think about it after setup.\n\n## What you give up\n\nBe honest about this, because these tools are often oversold.\n\n- **Polish.** Voice modes, mobile apps and slick document handling lag well behind the commercial products.\n- **The built-in extras.** Web search, code execution and file retrieval exist in some of these, and they are more work to set up and less reliable than the versions inside a paid product.\n- **Support.** When something breaks, you are reading issues on a code-hosting site.\n- **Maintenance.** Updates are yours to apply. A front-end left unpatched for a year on a public server is a genuine security problem.\n\n## Getting one running\n\nThe lowest-effort path is Chatbox: download, install, paste a key, done in five minutes. The most capable is Open WebUI, which needs Docker:\n\n```bash\ndocker run -d -p 3000:8080 \\\n  -v open-webui:/app/backend/data \\\n  --name open-webui ghcr.io/open-webui/open-webui:main\n```\n\nThen open `localhost:3000`, create the first account, and add your provider keys in settings. On the same machine it will also find a local model served by Ollama without further configuration.\n\n## The setting worth changing on day one\n\nMost front-ends send the entire conversation with every message, which is correct for coherence and expensive for long chats. Nearly all of them have a setting (often called context window, message limit or history depth) that caps how many previous turns get resent.\n\nSet it to something like the last ten messages. You will barely notice the difference in quality, and on a long working conversation it can cut the cost by most of it. This is the single highest-value configuration change in any of these applications, and it is off by default in all of them.\n\n## Two cautions worth stating\n\n**Do not expose it to the internet carelessly.** These tools are designed to be run on your own machine or behind a login. A copy on a public address with your API key inside is a bill waiting to happen and, if it holds documents, a data leak.\n\n**Check what any front-end sends.** Most of these are honest and their code is public, which is the point of choosing open ones. Applications from app stores that offer the same convenience are frequently not: some route your requests through their own servers, where your text and sometimes your key can be read. If the app cannot explain where your request goes, assume it goes through them.\n\nThat last point generalises past this lesson. A front-end sits between you and the model and sees everything. Choosing one whose code you or somebody else can read is not paranoia: it is the only way that question gets answered at all."},"check":{"question":"Why is choosing an open-source front-end over a convenient app-store client a meaningful decision about data rather than only about features?","options":[{"text":"Open-source apps encrypt conversations locally, while commercial clients store them in plain text on the device.","correct":false,"tempting":"Asserts an encryption difference that does not follow from licensing; either kind may or may not encrypt local storage."},{"text":"A front-end sees every message, and only readable code settles where the requests actually go.","correct":true},{"text":"Open-source apps cannot transmit data anywhere, because they run entirely on the user's own machine.","correct":false,"tempting":"Confuses open with local; an open front-end still sends every request to whichever provider you configured."},{"text":"App-store clients are required to route traffic through their publisher's infrastructure to comply with store review policies.","correct":false,"tempting":"Invents a store requirement; some clients proxy requests and others do not, which is exactly why it has to be checked."}]},"prev":{"slug":"keys-and-spend-caps","title":"Keys, spend caps, and the bill nobody wants","url":"https://addaly.com/learn/choosing-your-tools/keys-and-spend-caps"},"next":{"slug":"routers-and-aggregators","title":"Routers: one key, many models","url":"https://addaly.com/learn/choosing-your-tools/routers-and-aggregators"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Building your own chat app for nothing', in Choosing and Using the Tools. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/choosing-your-tools/free-front-ends (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Building your own chat app for nothing","courseTitle":"Choosing and Using the Tools","module":{"index":3,"slug":"the-routes-in","title":"The routes in"},"answer":null,"keyIdea":"A free open-source front-end turns an API key into a chat application you control (your system prompt, your stored history, several providers and a local model in one window) at the cost of polish, built-in extras and support.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-gap-the-api-leaves","runs":[{"text":"The gap the API leaves"}]},{"t":"p","runs":[{"text":"An API key gives you models and no product. A free, open-source front-end fills that gap, and the result is a chat application you control: your system prompt, your model choice, your conversation history stored where you decide."}]},{"t":"p","runs":[{"text":"Four are worth knowing, all free and open source:"}]},{"t":"ul","items":[[{"text":"Open WebUI","b":true},{"text":": the most complete. Runs in a browser, supports multiple providers and local models at once, has document upload with retrieval, web search and multi-user accounts. Installed with one Docker command."}],[{"text":"LibreChat","b":true},{"text":": similar scope, strong on multi-provider setups, plugins and organisational use."}],[{"text":"Chatbox","b":true},{"text":": a simple desktop application. Install it, paste a key, use it. The easiest starting point by a distance."}],[{"text":"Jan","b":true},{"text":": a desktop app built around running models locally, which also accepts remote keys."}]]},{"t":"h2","id":"what-you-gain","runs":[{"text":"What you gain"}]},{"t":"p","runs":[{"text":"Every model in one window.","b":true},{"text":" Switch between providers mid-conversation. This is the fastest way to build the two-tool habit, because a second opinion is one dropdown away rather than another tab and another login."}]},{"t":"p","runs":[{"text":"Your own system prompt.","b":true},{"text":" Set it once (how you want to be addressed, what you do, spelling conventions, how long answers should be) and it applies everywhere, on every model, without a company’s instructions competing with yours."}]},{"t":"p","runs":[{"text":"Conversations that are yours.","b":true},{"text":" Stored in a database on your machine or your server. Exportable, searchable, backed up by you, not deleted when a subscription lapses."}]},{"t":"p","runs":[{"text":"Cost visibility.","b":true},{"text":" Most of these show token counts and running spend per conversation. Seeing the number after each message changes how you use the tool within a week."}]},{"t":"p","runs":[{"text":"A local model beside a frontier one.","b":true},{"text":" The same window, one dropdown apart. Confidential material goes to the local one; everything else goes wherever is best. Nothing about this arrangement requires you to think about it after setup."}]},{"t":"h2","id":"what-you-give-up","runs":[{"text":"What you give up"}]},{"t":"p","runs":[{"text":"Be honest about this, because these tools are often oversold."}]},{"t":"ul","items":[[{"text":"Polish.","b":true},{"text":" Voice modes, mobile apps and slick document handling lag well behind the commercial products."}],[{"text":"The built-in extras.","b":true},{"text":" Web search, code execution and file retrieval exist in some of these, and they are more work to set up and less reliable than the versions inside a paid product."}],[{"text":"Support.","b":true},{"text":" When something breaks, you are reading issues on a code-hosting site."}],[{"text":"Maintenance.","b":true},{"text":" Updates are yours to apply. A front-end left unpatched for a year on a public server is a genuine security problem."}]]},{"t":"h2","id":"getting-one-running","runs":[{"text":"Getting one running"}]},{"t":"p","runs":[{"text":"The lowest-effort path is Chatbox: download, install, paste a key, done in five minutes. The most capable is Open WebUI, which needs Docker:"}]},{"t":"code","lang":"bash","label":"Bash","text":"docker run -d -p 3000:8080 \\\n  -v open-webui:/app/backend/data \\\n  --name open-webui ghcr.io/open-webui/open-webui:main"},{"t":"p","runs":[{"text":"Then open "},{"text":"localhost:3000","code":true},{"text":", create the first account, and add your provider keys in settings. On the same machine it will also find a local model served by Ollama without further configuration."}]},{"t":"h2","id":"the-setting-worth-changing-on-day-one","runs":[{"text":"The setting worth changing on day one"}]},{"t":"p","runs":[{"text":"Most front-ends send the entire conversation with every message, which is correct for coherence and expensive for long chats. Nearly all of them have a setting (often called context window, message limit or history depth) that caps how many previous turns get resent."}]},{"t":"p","runs":[{"text":"Set it to something like the last ten messages. You will barely notice the difference in quality, and on a long working conversation it can cut the cost by most of it. This is the single highest-value configuration change in any of these applications, and it is off by default in all of them."}]},{"t":"h2","id":"two-cautions-worth-stating","runs":[{"text":"Two cautions worth stating"}]},{"t":"p","runs":[{"text":"Do not expose it to the internet carelessly.","b":true},{"text":" These tools are designed to be run on your own machine or behind a login. A copy on a public address with your API key inside is a bill waiting to happen and, if it holds documents, a data leak."}]},{"t":"p","runs":[{"text":"Check what any front-end sends.","b":true},{"text":" Most of these are honest and their code is public, which is the point of choosing open ones. Applications from app stores that offer the same convenience are frequently not: some route your requests through their own servers, where your text and sometimes your key can be read. If the app cannot explain where your request goes, assume it goes through them."}]},{"t":"p","runs":[{"text":"That last point generalises past this lesson. A front-end sits between you and the model and sees everything. Choosing one whose code you or somebody else can read is not paranoia: it is the only way that question gets answered at all."}]}],"check":{"question":[{"text":"Why is choosing an open-source front-end over a convenient app-store client a meaningful decision about data rather than only about features?"}],"options":[{"text":[{"text":"Open-source apps encrypt conversations locally, while commercial clients store them in plain text on the device."}],"correct":false,"tempting":[{"text":"Asserts an encryption difference that does not follow from licensing; either kind may or may not encrypt local storage."}]},{"text":[{"text":"A front-end sees every message, and only readable code settles where the requests actually go."}],"correct":true,"tempting":null},{"text":[{"text":"Open-source apps cannot transmit data anywhere, because they run entirely on the user’s own machine."}],"correct":false,"tempting":[{"text":"Confuses open with local; an open front-end still sends every request to whichever provider you configured."}]},{"text":[{"text":"App-store clients are required to route traffic through their publisher’s infrastructure to comply with store review policies."}],"correct":false,"tempting":[{"text":"Invents a store requirement; some clients proxy requests and others do not, which is exactly why it has to be checked."}]}],"order":[3,2,1,0],"why":null},"prev":{"slug":"keys-and-spend-caps","title":"Keys, spend caps, and the bill nobody wants","minutes":8},"next":{"slug":"routers-and-aggregators","title":"Routers: one key, many models","minutes":8}}}