Describe a tool in plain English. Watch it get built, tested, and fixed — live.
An AI Python toolsmith that runs as a real Linux app — not a browser tab, not a cloud service.
TheDawg agrees on the spec with you, forges a working GUI application, and shows you exactly what it's doing while it does it — planning, writing, testing, and fixing its own bugs, step by step. You launch and test the tool on the spot, and when it's right, TheDawg packages it for GitHub or builds it into a single-file executable.
Everything runs locally. Your API keys never leave your machine.
|
🔨 You describe it
👁 You watch it build
|
▶ You test it
◆ You ship it
|
curl -fsSL https://raw.githubusercontent.com/the-priest/theDawg/main/install.sh | bashInstalls into ~/.local/share/thedawg, drops a thedawg launcher on your PATH, and adds
an app-menu entry with the icon. No root needed. Re-run to update; install.sh --uninstall
to remove.
The installer detects your distro, sorts out the native window, and writes the PATH line in
the right syntax for your login shell — including fish, which CachyOS ships by default.
Tip
Run thedawg --doctor to see what's present, what's missing, and one copy-pasteable command
in your package manager's names to fix the lot. On CachyOS that's a pacman line, not apt.
|
TheDawg opens in a GTK4 + libadwaita window driving a WebKitGTK view: one process
(~150 MB vs Chromium's ~500 MB), a real titlebar that follows your system theme, a proper
Wayland app_id so the icon and task switcher work on Plasma 6, native shortcuts, and
nothing written to a browser profile.
sudo pacman -S --needed python-gobject gtk4 libadwaita webkit2gtk-6.0Without those it falls back to a Chromium app window, then a plain browser tab — it always runs, it just looks less like it belongs.
Keyboard shortcuts & command-line flags
| shortcut | does |
|---|---|
Ctrl+R / F5 |
reload |
Ctrl + / - / 0 |
zoom (remembered between sessions) |
F11 |
fullscreen |
Ctrl+Shift+I / F12 |
developer tools |
Ctrl+Q |
quit |
thedawg # launch
thedawg --doctor # check this machine, print exact install commands
thedawg --browser # force the browser front door
thedawg --safe-gfx # disable the WebKit dmabuf renderer (fixes a black window)
thedawg --dev # open with developer tools
thedawg --port N # start looking for a free port at NIf the window comes up black or blank, that's the known Mesa/NVIDIA dmabuf issue —
thedawg --safe-gfxis the fix.
Set one for whichever provider you use — as an environment variable or in Settings:
| Provider | Environment variable | Notes |
|---|---|---|
| SiliconFlow | SILICONFLOW_API_KEY=sk-... |
Default — DeepSeek V4 Flash |
| Groq | GROQ_API_KEY=gsk_... |
Fast, free tier |
| Google AI Studio | GOOGLE_API_KEY=AIza... |
|
| Novita AI | NOVITA_API_KEY=sk_... |
Keys are stored in a per-user config file and are never sent to the browser. TheDawg pulls each provider's live model list using your key, so the dropdown shows exactly what your account can call. Pick any model in Settings and it sticks — for every call, not just some.
Four steps, shown along the top of the workspace:
You describe the tool. TheDawg asks a few sharp multiple-choice questions (tap to answer) or lays out a plan, so it builds what you meant rather than its best guess. Skip the questions and just say "build it" anytime.
It forges a testing version. Hit ▶ launch and the tool opens its own window on your desktop — nothing runs on its own, you press the button. Or hit 🔎 self-test and TheDawg runs the tool itself on a hidden display, screenshots it, checks it isn't blank, and clicks it — then tells you what's wrong without you typing a thing.
⮐ send log to AI & fix diagnoses the run log plus the last self-test and patches the code. Or run the ✦ auto-polish loop: each pass opens the tool, looks at it, pokes it, and feeds real crashes straight back — stopping the moment it converges.
◆ get ready for GitHub assembles a full repo (README, install.sh, LICENSE,
.gitignore, push commands — HTTPS remotes, never SSH). Or ⬛ build packs it into a
single-file Linux binary with PyInstaller.
Note
It knows which machine it's building for. The system prompt is built at startup from
your actual distro. Ask for a Tkinter tool on CachyOS and the generated code tells you
sudo pacman -S --needed tk — not the wrong Debian name. The host chip in the top bar
shows what it detected.
Toolkits it can target: PyQt6 / PySide6 (default for anything serious, best on KDE), GTK4 + libadwaita, CustomTkinter, Tkinter.
|
🔨 Building & iterating
🔍 Understanding the code
|
📦 Dependencies & packaging
💾 Keeping your work
🔊 Polish
|
DeepSeek V4 Flash is the default — strong, fast, and roughly a fifth of Pro's price — and your choice in Settings applies to every call. Want Pro for the heavy build work? Pick it, and it sticks.
TheDawg keeps a 1M-token budget lasting by working smart, not just cheap:
- Targeted edits. A one-line change asks the model for a small search/replace patch instead of retyping the whole file — 4–8× fewer output tokens on iterate and fix rounds. If a patch doesn't apply cleanly it falls back to a full rewrite, and a circuit breaker disables the whole scheme if a model can't produce the format.
- Free local analysis catches wrong argument counts, unknown keywords and mutable defaults — the most common way generated code parses fine and then dies at runtime. Every one caught locally is a paid fix round that never happens.
- Superseded code and stale attachments are collapsed out of the conversation, so a long session doesn't resend ten versions of the same growing file, or a 60 KB sample CSV every turn.
- Reply length is capped per tier, so a rambling model can't run up a bill.
Watch it happen. The top bar shows tokens and a running cost estimate (with a
~when a provider doesn't report usage);clidawg /costbreaks it down per model. Figures are list-rate indicators, not an invoice.
A terminal front end that shares the same engine — builds command-line tools by default
(argparse, exit codes, pipe-friendly stdout), /gui to switch to GUI apps. Runs as a Textual
TUI, a --plain REPL, or one-shot: clidawg build "a tool that ...".
- Zero external network requests from the UI — system fonts and a ~2 KB purpose-built Python highlighter replaced Google Fonts and a 120 KB CDN highlighter that used to stall first paint with the network unplugged.
- HTTP/1.1 keep-alive, gzip, ETag revalidation and an in-memory static cache; the background
pauses when unfocused and honours
prefers-reduced-motion. - Fonts are optional but nice:
sudo pacman -S --needed ttf-jetbrains-mono inter-font - Local-only on
127.0.0.1— nothing is exposed to your network. Keys stay in a local config file. Generated tools run on your machine as you; the danger guard flags destructive patterns before anything runs on all three execution paths (launch, self-test, and the silent smoke test) — but you're always the one who presses launch.
Built on Kali. At home on CachyOS.