<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: mindilot</title>
    <description>The latest articles on DEV Community by mindilot (@cihangir_aydncihan_32).</description>
    <link>https://dev.to/cihangir_aydncihan_32</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3935756%2Fd70ec22e-1e20-486f-8840-f8fabe3cc5a3.png</url>
      <title>DEV Community: mindilot</title>
      <link>https://dev.to/cihangir_aydncihan_32</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cihangir_aydncihan_32"/>
    <language>en</language>
    <item>
      <title>Four ways to install an open-source AI tool (and which one to pick)</title>
      <dc:creator>mindilot</dc:creator>
      <pubDate>Wed, 07 Oct 2026 02:10:25 +0000</pubDate>
      <link>https://dev.to/cihangir_aydncihan_32/four-ways-to-install-an-open-source-ai-tool-and-which-one-to-pick-287k</link>
      <guid>https://dev.to/cihangir_aydncihan_32/four-ways-to-install-an-open-source-ai-tool-and-which-one-to-pick-287k</guid>
      <description>&lt;p&gt;There are four ways to install an open-source AI tool: a desktop app, a single&lt;br&gt;
terminal command, Docker, and an editor extension. They are listed here roughly&lt;br&gt;
from least to most technical, and all four are covered below.&lt;br&gt;
This is not "how to install tool X" — there are enough of those. It is the piece&lt;br&gt;
that is missing before those: which of the four paths you should open at all.&lt;/p&gt;
&lt;h2&gt;
  
  
  Path 1 — Desktop app: download, install, double-click
&lt;/h2&gt;

&lt;p&gt;The shortest route. You download a file, double-click it, and the app opens. No&lt;br&gt;
terminal, no commands.&lt;br&gt;
AnythingLLM is the best example: a local assistant you can point at your own&lt;br&gt;
documents. The desktop build runs on Windows, macOS and Linux, with separate&lt;br&gt;
64-bit x86 and ARM downloads for Windows.&lt;br&gt;
Two things from the &lt;a href="https://docs.anythingllm.com/" rel="noopener noreferrer"&gt;official docs&lt;/a&gt; worth knowing before you install: it is built&lt;br&gt;
for regular Home/Pro user accounts and targets Windows 11 — Enterprise or Server&lt;br&gt;
editions may not work — and you should pick "only for me" rather than "all users":&lt;br&gt;
the docs say a machine-wide install causes problems and is not supported.&lt;br&gt;
It has a built-in local LLM engine (powered by Ollama), so you do not need to&lt;br&gt;
install a separate runner. The pieces needed to use an NVIDIA or AMD card are&lt;br&gt;
pulled in during setup.&lt;br&gt;
For images, the second example is Upscayl: it enlarges small, blurry photos.&lt;br&gt;
It has one hard requirement — a &lt;strong&gt;Vulkan&lt;/strong&gt;-capable&lt;br&gt;
GPU. The &lt;a href="https://github.com/upscayl/upscayl" rel="noopener noreferrer"&gt;README&lt;/a&gt; notes it does not work on most integrated graphics, but adds that&lt;br&gt;
trying costs nothing. There are &lt;code&gt;.exe&lt;/code&gt;, &lt;code&gt;.dmg&lt;/code&gt; (or &lt;code&gt;brew install --cask upscayl&lt;/code&gt;&lt;br&gt;
on macOS), AppImage, Flatpak and Snap builds.&lt;br&gt;
&lt;strong&gt;Where this path stops:&lt;/strong&gt; you are stuck with the experience that shipped. Anything&lt;br&gt;
multi-user, or a chat widget embedded in your own site, exists in AnythingLLM only&lt;br&gt;
in its Docker build.&lt;/p&gt;
&lt;h2&gt;
  
  
  Path 2 — One command in the terminal
&lt;/h2&gt;

&lt;p&gt;Here you paste one command and press Enter. If you have never opened a terminal:&lt;br&gt;
&lt;code&gt;Win + X&lt;/code&gt; then &lt;em&gt;Terminal&lt;/em&gt; on Windows, &lt;code&gt;Cmd + Space&lt;/code&gt; then &lt;code&gt;Terminal&lt;/code&gt; on macOS,&lt;br&gt;
&lt;code&gt;Ctrl + Alt + T&lt;/code&gt; on Linux. Do not close the window while it runs — the download is&lt;br&gt;
happening there.&lt;br&gt;
Ollama is the standard example: it pulls and runs open models. On Linux the&lt;br&gt;
install is one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the server is not already running afterwards, start it with &lt;code&gt;ollama serve&lt;/code&gt;.&lt;br&gt;
Pulling a model is one command too. The &lt;a href="https://docs.ollama.com/quickstart" rel="noopener noreferrer"&gt;official quickstart&lt;/a&gt; uses Gemma 4 E2B:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma4:e2b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That download is about 7.2 GB, and the docs recommend 8 GB of available VRAM (or&lt;br&gt;
unified memory on a Mac). With less, Ollama falls back to system RAM and responses&lt;br&gt;
get slower. It also exposes a local API you can hit from your own scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:11434/api/chat &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"gemma4:e2b","messages":[{"role":"user","content":"hi"}],"stream":false}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second example is the agent we run every day: Hermes Agent. On Linux and&lt;br&gt;
macOS it is &lt;a href="https://hermes-agent.nousresearch.com/docs/getting-started/installation" rel="noopener noreferrer"&gt;one line&lt;/a&gt;;&lt;br&gt;
on Windows there is a separate PowerShell command that runs natively, without WSL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://hermes-agent.nousresearch.com/install.ps1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setup lands in &lt;code&gt;%LOCALAPPDATA%\hermes&lt;/code&gt;, where settings, memory and sessions live.&lt;br&gt;
Two things we hit: some antivirus products quarantine the bundled &lt;code&gt;uv.exe&lt;/code&gt; as a&lt;br&gt;
false positive — it is the tool that manages the Python environment. And after one&lt;br&gt;
update the desktop app stopped launching until the next release, so we now run&lt;br&gt;
&lt;code&gt;hermes backup&lt;/code&gt; before updating; it packs settings, memory and sessions into a&lt;br&gt;
single zip.&lt;br&gt;
If you write code, the third example is OpenCode (&lt;a href="https://opencode.ai/docs/" rel="noopener noreferrer"&gt;docs&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://opencode.ai/install | bash
&lt;span class="c"&gt;# or, with Node installed&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; opencode-ai
&lt;span class="c"&gt;# or on macOS/Linux via Homebrew&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;anomalyco/tap/opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Where this path stops:&lt;/strong&gt; the commands are OS-specific. A &lt;code&gt;curl … | bash&lt;/code&gt; line&lt;br&gt;
written for Linux and macOS does not work on Windows as-is. Check the README for a&lt;br&gt;
separate PowerShell command or a downloadable installer before you start.&lt;/p&gt;
&lt;h2&gt;
  
  
  Path 3 — Docker
&lt;/h2&gt;

&lt;p&gt;Docker packs an application with everything it needs into an isolated box. It is&lt;br&gt;
the right tool for browser-based panels and for anything that must keep running on&lt;br&gt;
a server. The app comes up with one command, but you install Docker first. On&lt;br&gt;
Windows that means Docker Desktop, which offers a per-user mode that does not need&lt;br&gt;
admin rights and uses WSL 2 underneath.&lt;br&gt;
The best illustration is the automation platform n8n.&lt;br&gt;
n8n's &lt;a href="https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker" rel="noopener noreferrer"&gt;Docker page&lt;/a&gt;&lt;br&gt;
(now marked outdated in favour of Docker Compose) still documents this quick-trial&lt;br&gt;
command — first create the volume, then run the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker volume create n8n_data
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; n8n &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 5678:5678 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;GENERIC_TIMEZONE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Europe/Istanbul"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Europe/Istanbul"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; n8n_data:/home/node/.n8n &lt;span class="se"&gt;\&lt;/span&gt;
  n8nio/n8n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The editor opens at &lt;code&gt;http://localhost:5678&lt;/code&gt;. Do not drop &lt;code&gt;-v n8n_data:/home/node/.n8n&lt;/code&gt;:&lt;br&gt;
that volume is what survives when the container is removed. The docs are explicit&lt;br&gt;
that this directory holds encryption keys and logs, not just the database — losing&lt;br&gt;
it can lock you out of your own credentials. For anything beyond a local trial, n8n&lt;br&gt;
recommends Docker Compose.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Careful with older tutorials.&lt;/strong&gt; You will find this command around with the image&lt;br&gt;
&lt;code&gt;docker.n8n.io/n8nio/n8n&lt;/code&gt; and without the &lt;code&gt;docker volume create&lt;/code&gt; step. Follow the&lt;br&gt;
form above, or better, the Docker Compose setup.&lt;br&gt;
For your own chat UI there is Open WebUI, which puts several models behind one&lt;br&gt;
screen and lets you chat with uploaded documents. Generate a secret key once and&lt;br&gt;
save it:&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl rand &lt;span class="nt"&gt;-hex&lt;/span&gt; 32
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then paste that saved value into the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--add-host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;host.docker.internal:host-gateway &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; open-webui:/app/backend/data &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;WEBUI_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-saved-key &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; open-webui &lt;span class="nt"&gt;--restart&lt;/span&gt; always &lt;span class="se"&gt;\&lt;/span&gt;
  ghcr.io/open-webui/open-webui:main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;code&gt;http://localhost:3000&lt;/code&gt;. Three flags earn their place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-v open-webui:/app/backend/data&lt;/code&gt; — chats, users and settings live here. The &lt;a href="https://docs.openwebui.com/getting-started/quick-start/" rel="noopener noreferrer"&gt;docs&lt;/a&gt;
say to never run without it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--add-host=host.docker.internal:host-gateway&lt;/code&gt; — lets the container reach Ollama
running on your machine.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-e WEBUI_SECRET_KEY=…&lt;/code&gt; — use the same saved key every time. If the key changes
when the container is recreated, everyone gets logged out.
For GPU support there is the &lt;code&gt;:cuda&lt;/code&gt; tag plus &lt;code&gt;--gpus all&lt;/code&gt; (which needs NVIDIA's
container toolkit on Linux or WSL). If you would rather not install Ollama
separately, the &lt;code&gt;:ollama&lt;/code&gt; tag bundles both. And if you want to avoid Docker
entirely, the Python path works — with two caveats from the docs: &lt;code&gt;pip install
open-webui&lt;/code&gt; must be followed by &lt;code&gt;open-webui serve&lt;/code&gt;, and the supported interpreters
are &lt;strong&gt;Python 3.11 and 3.12 — not 3.13&lt;/strong&gt;, where installs fail or break at runtime.
&lt;strong&gt;RAM and disk:&lt;/strong&gt; there is no fixed number. The space goes to images and models,
each several gigabytes, and memory scales with how many services run at once.
## Path 4 — Editor extension
If you write code, this is the natural fit: it installs into your editor and works
in the same window as your files. Cline and Kilo Code are two examples, both from
the VS Code Marketplace, and both also have a JetBrains plugin and a CLI
(&lt;code&gt;npm i -g cline&lt;/code&gt; and &lt;code&gt;npm install -g @kilocode/cli&lt;/code&gt;), so they work from the
terminal too.
The thing to understand about this path: the extension is the interface, the model
comes from somewhere else. After installing Cline you connect either a local model
or a cloud provider with an API key. Kilo Code shortens that step — per its README
you can start without an API key by signing in and reaching the models at the
provider's price. Either way the install is free and the cloud model is what you
pay for as you use it.
## Which path is yours?
| How comfortable you are | What you want to do | Pick |
|---|---|---|
| You do not want to type commands | Chat with your own documents, upscale photos | Path 1 — desktop app |
| You can paste one command | Pull and run a model, install an agent | Path 2 — terminal |
| You want a service reachable from a browser | Automation flows, a chat panel for a team | Path 3 — Docker |
| You write code and live in your editor | An assistant that works on your project files | Path 4 — extension |
Hardware is a separate threshold. If you run models locally, your GPU memory is the
deciding factor — it works on CPU too, just slowly.
## Where does the model come from?
Most of these tools do not ship a model. What you installed is a runner or an
interface; the model is a separate choice, and there are two.
&lt;strong&gt;Local.&lt;/strong&gt; The model downloads to your machine, works offline, and your data never
leaves it. The price is hardware: the file takes gigabytes of disk and GPU memory
while it runs. Ollama and LM Studio (&lt;a href="https://lmstudio.ai/" rel="noopener noreferrer"&gt;lmstudio.ai&lt;/a&gt;) are the
two common runners. Models live on Hugging Face, where each page lists the
license, file sizes and how to run it — and many have a browser demo in Spaces.
Checking that demo is the cheapest way to find out whether a model is useful before
downloading gigabytes of weights.
&lt;strong&gt;API.&lt;/strong&gt; The model runs on someone else's server and you send requests. No hardware,
but you pay per use and your data goes to that server. OpenRouter gives you many
models behind one account, free ones included — though which models are free shifts
over time, so check its own site rather than any price list you find in a post,
this one included.
## Read the license before you deploy
"Open source" does not mean "anything goes", and it matters most if you are putting
this in a company. Four groups cover most of what you will meet:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MIT and Apache-2.0&lt;/strong&gt; — near-unconditional. Use, modify, ship commercially.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPL-3.0&lt;/strong&gt; — use and modify freely, but distribute a modified version and you
must publish its source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AGPL-3.0&lt;/strong&gt; — the same, extended to the network. Offer a modified version as a
hosted service and you still owe the source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restricted licenses&lt;/strong&gt; — source-available but with limits: separate terms for
commercial use, or commercial use forbidden outright. Read these carefully.
The license lives in a &lt;code&gt;LICENSE&lt;/code&gt; file at the root of the project's repository. One
more trap: a tool's core can be MIT while its enterprise features are licensed
separately. If this is for work, having someone read it is slow, and still cheaper
than the problem it prevents.
## Do not expose the panel you just installed
A panel you use at &lt;code&gt;localhost&lt;/code&gt; is reachable only by you. The same panel on a server
with its port open is reachable by anyone. A login screen alone is not enough.
We learned this the expensive way. During a security pass on our own server we had
to move a service that was still directly reachable on its port behind a reverse
proxy. If you are deploying to a server, apply these before you start:&lt;/li&gt;
&lt;li&gt;Do not expose an admin panel straight to the internet.&lt;/li&gt;
&lt;li&gt;If you must, put it behind a reverse proxy and turn on authentication first.&lt;/li&gt;
&lt;li&gt;Change or remove default credentials, and close whatever accepts new signups.&lt;/li&gt;
&lt;li&gt;Keep it updated. A panel installed and forgotten for weeks causes more incidents
than a mistake made during setup.
## So what do you do?&lt;/li&gt;
&lt;li&gt;Decide what you actually want: chat over documents, model experimenting,
automation, or code.&lt;/li&gt;
&lt;li&gt;Pick your path from the table and start with &lt;strong&gt;one&lt;/strong&gt; tool. Install three at once
and you will lose track of which one is doing what.&lt;/li&gt;
&lt;li&gt;If you are going local, choose a model that fits your GPU before downloading
anything, then check its Hugging Face page.&lt;/li&gt;
&lt;li&gt;Check the license, especially for work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. If it is going on a server, apply the security list before setup, not after.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Adapted from the Turkish guide &lt;a href="https://mindilot.com/rehberler/acik-kaynak-yapay-zeka-araclari-nasil-kurulur" rel="noopener noreferrer"&gt;Açık kaynak yapay zeka araçları nasıl kurulur&lt;/a&gt;.&lt;br&gt;
The same site has a directory of open-source AI tools, with each project's license&lt;br&gt;
taken from its own repository. It is in Turkish — the four install paths above are&lt;br&gt;
not language-specific.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>docker</category>
      <category>selfhosted</category>
    </item>
  </channel>
</rss>
