DEV Community

Charlie Archer Simmons
Charlie Archer Simmons

Posted on

I built a free self-hosted AI chat app with web search and browser agent automation

 ## What I built
1 paragraph — what SURF is, what problem it solves.

Why I built it

ChatGPT costs money. Runs in the cloud. Your data leaves your machine.
I wanted something free, local, and private.

What it can do

  • bullet list of features (keep it brief)
  • include a screenshot / gif here ← critical

Tech stack

Python · Flask · Playwright · DuckDuckGo (no key needed)

The hard parts

Pick 1-2 interesting technical challenges you solved.
e.g. "Getting Playwright to stream browser screenshots in real time was tricky because..."
This is what gets upvotes — people love implementation details.

Try it yourself

Link to GitHub + one-line install command

What's next

1-2 future features you're thinking about.
Ask readers: "What would you add?"

GitHub logo rar-file / surf

Self-hosted AI chat — web UI + terminal CLI. Connect any model (Ollama, OpenAI, Anthropic), free web search, browser agent automation, persistent memory, and analytics.

SURF — Search · Understand · Reason · Fast

Python Flask Ollama Playwright License: MIT Platform


A self-hosted AI chat with a sleek web UI and a rich terminal CLI.
Connect any model. Search the web for free. Automate your browser. Remember everything.


SURF — Search · Understand · Reason · Fast

A self-hosted AI chat with a polished web UI and a rich CLI. Connect to any model — local or cloud — with free built-in web search, persistent memory, a browser automation agent, and a full analytics dashboard.


Preview

Web UI

SURF Web UI

Terminal CLI

SURF CLI

Features

🦙 Any AI Provider
Ollama (local), Anthropic Claude, OpenAI GPT, OpenRouter, or any OpenAI-compatible endpoint. Switch mid-conversation with /provider.

🔍 Free Web Search
DuckDuckGo search with no API key and no quota. Multi-source synthesis powered by Playwright. Works in both web UI and CLI.

🤖 Browser Agent
Vision-powered autonomous browsing. Give a task in plain English — SURF opens a real browser, takes screenshots, and executes: click, type, scroll…

Top comments (0)