Published: Jun 2, 2026 by Isaac Johnson
Today we’ll take a look at Charm Crush. I love OS AI CLI’s and this one even Open Sources it’s providers. I’ll try some Cloud options but really focus on local Ollama hosted models.
I’ll also take a moment to bid farewell to Google Code Assist (GCA) and Gemini CLI. I loved these tools and they’ll go offline June 18th this year in just a couple of weeks.
Crush
Installing
$ nvm use lts/jod
Now using node v22.22.0 (npm v10.9.4)
$ npm install -g @charmland/crush
added 47 packages in 5s
I can now launch with crush
But I noticed after launch it did some setup and attempted to use Anthropic by way of AWS Bedrock
I’ll try Gemini 3.5 Flash
Because Google has changed the rules and the “AI Pro” account I have can no longer be used with non-Google owned tools - and they are killing Gemini CLI, which is Open-Source, I must (legally) use my Gemini API key
Which, once entered, changes to let me know our model has been swapped
While the UI doesn’t let us easily add MCP servers, we can follow the docs and add one in a crush.json file
builder@DESKTOP-QADGF36:~/Workspaces/mytest2$ cat .crush.json
{
"$schema": "https://charm.land/crush.json",
"mcp": {
"offenquelle": {
"type": "http",
"url": "https://mcp.offenquelle.tech/mcp"
}
}
}
I can now see my private MCP server when i fire it up along with all the discovered tools
I can now add some Ollama local models as well
$ cat .crush.json
{
"$schema": "https://charm.land/crush.json",
"mcp": {
"offenquelle": {
"type": "http",
"url": "https://mcp.offenquelle.tech/mcp"
}
},
"providers": {
"ollama": {
"name": "Ollama",
"base_url": "http://192.168.1.220:11434/v1/",
"type": "openai",
"models": [
{
"name": "Gemma4 e4b",
"id": "gemma4:e4b",
"context_window": 256000,
"default_max_tokens": 20000
},
{
"name": "Qwen3.6 27b",
"id": "qwen3.6:27b",
"context_window": 256000,
"default_max_tokens": 20000
}
]
}
}
}
I tried but couldn’t get Gemma4 to check out the files in the local workspace
It took a couple tries with granite4.1, but I did manage to get that model to list files
I kept thinking that maybe it was my Crush setup preventing file creation. I tried Gemini 3.5 flash again to build a full todo app, which it did
It claimed that cost US$1.07 but when I checked my bill the next day, it was less than half of that, $0.443
Filesystem MCP
Let’s add the Filesystem MCP server
"mcp": {
"offenquelle": {
"type": "http",
"url": "https://mcp.offenquelle.tech/mcp"
},
"filesystem": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/home/builder/Workspaces",
"/tmp"
],
"timeout": 120,
"disabled": false
}
},
I thought perhaps using with a larger model like Qwen3.6 27B might work, but it seems to just stop after the find command each time.
I then tried Qwen3:14b. It asked to use the tool which was a good sign
It seems to create To-Do lists then not do them. Though “Run steps” got me closest
I saw this newstack post that hinted that perhaps I need to be more explicit with Crush permissions in the JSON file:
"permissions": {
"allowed_tools": [
"view",
"ls",
"grep",
"edit",
"find",
"sed",
"cat"
]
},
But again, these damn To-Dos, even in Yolo mode:
I find this so frustrating that it creates a plan but there is no command or obvious way to execute it. I even hit up Gemini Pro to ask it and tried it’s suggestions
I tried devstral-small-2 with no context or window limits to see if that might work (didn’t)
Perhaps the fact this is WSL on Copilot OS is causing issues
But still it fails even if I’m explicit on pathing
Using a local model in Ollama in Windows didn’t create any better results
Ubuntu / Linux
Enough with WSL. Let’s do this on Linux. I’ll use the latest LTS, lts/krypton (24.*)
builder@bosgamerz9:~/Workspaces/fjtui$ nvm use lts/krypton
Now using node v24.16.0 (npm v11.13.0)
builder@bosgamerz9:~/Workspaces/fjtui$ npm install -g @charmland/crush
added 47 packages in 3s
I tried a local model running in Ollama but it seemed to forget what codebase meant.
I kept trying different ways to phrase it.
I finally got it to list files but then it forgot what it was asked to do!
Using IBM Granite on a different laptop, it still just refuses to write files, though it finally reads them
I tried running just using the command line and no TUI
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Create a README.md" --cwd /home/builder/Workspaces/fjtui/ | tee README.md
Let me first explore the project to understand what it does.
<tool_calls><tool_use>
<parameter>name>bash</parameter>
<parameter>arguments>
<parameter>command</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && find . -type f | head -50
</parameter>
<parameter>description</parameter>
<parameter>List all files in the project
</parameter>
</tool_use>
<parameter>name>bash</parameter>
<parameter>command</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && cat go.mod 2>/dev/null || cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat pyproject.toml 2>/dev/null || echo "No known config found"
</parameter>
<parameter>description</parameter>
<parameter>Check the project config to determine language/framework
</parameter>
</tool_use>
<parameter>name>bash</parameter>
<parameter>command
</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && head -60 main.go 2>/dev/null || head -60 main.py 2>/dev/null || head -60 main.rs 2>/dev/null || echo "No main file found"
</parameter>
<parameter>description</parameter>
<parameter>Check main entry point
</parameter>
</tool_use>
</tool_calls>
builder@bosgamerz9:~/Workspaces/fjtui$
builder@bosgamerz9:~/Workspaces/fjtui$ cat README.md
Let me first explore the project to understand what it does.
<tool_calls><tool_use>
<parameter>name>bash</parameter>
<parameter>arguments>
<parameter>command</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && find . -type f | head -50
</parameter>
<parameter>description</parameter>
<parameter>List all files in the project
</parameter>
</tool_use>
<parameter>name>bash</parameter>
<parameter>command</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && cat go.mod 2>/dev/null || cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat pyproject.toml 2>/dev/null || echo "No known config found"
</parameter>
<parameter>description</parameter>
<parameter>Check the project config to determine language/framework
</parameter>
</tool_use>
<parameter>name>bash</parameter>
<parameter>command</parameter>
<parameter>cd /home/builder/Workspaces/fjtui/ && head -60 main.go 2>/dev/null || head -60 main.py 2>/dev/null || head -60 main.rs 2>/dev/null || echo "No main file found"
</parameter>
<parameter>description</parameter>
<parameter>Check main entry point
</parameter>
</tool_use>
</tool_calls>
builder@bosgamerz9:~/Workspaces/fjtui$
I switched to a faster granite4.1:8b model
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Create a README.md" --cwd /home/builder/Workspaces/fjtui/ | tee READMEOUT.md
I’m unable to perform that action because the requested file or directory is located outside of the permitted workspace paths (/home/builder/Workspaces and /tmp). Please provide a path within those allowed directories, and I’ll be happy to assist you.
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Create /home/builder/Workspaces/fjtui/README.md" --cwd /home/builder/Workspaces/fjtui/ | tee READMEOUT.md
It looks like there wasn't a matching response for your query. Could you please provide more details or clarify what information you're looking for? I'm here to help with any text, file operations, searches, or other tasks within the capabilities of the tools available. Let me know how I can assist!
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Create /home/builder/Workspaces/fjtui/README.md with README contents" --cwd /home/builder/Workspaces/fjtui/ | tee READMEOUT.md
However, once I removed the errant tool output README.md and tried again, it worked just fine (i replaced backticks with dashes as this blog is in markdown)
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Create /home/builder/Workspaces/fjtui/README.md with README contents" --cwd /home/builder/Workspaces/fjtui/ | tee READMEOUT.md
The file at **/home/builder/Workspaces/fjtui/README.md** has been created (or overwritten) with the requested content. Let me know if there's anything else you need!
builder@bosgamerz9:~/Workspaces/fjtui$ cat README.md
# fjtui
A lightweight UI toolkit for building cross-platform desktop applications.
## Features
- **Cross‑platform**: Works on Linux, macOS, and Windows with a single codebase.
- **Modern API**: Fluent builder pattern for fast UI construction.
- **Lightweight**: Minimal dependencies, small binary size.
- **Easily Extensible**: Custom widgets can be added without modifying core library.
## Getting Started
---bash
# Install via npm or yarn
npm install fjtui
# Or using Yarn
yarn add fjtui
---
### Hello World Example
---javascript
import { Window, Button } from 'fjtui';
const app = new Window({ title: 'Hello, fjtui!' });
app.body.append(new Button({ text: 'Click Me' }));
app.run();
---
## Documentation
Full documentation is available at https://github.com/yourorg/fjtui/blob/main/docs/index.md.
## Contributing
See the [CONTRIBUTING.md](https://github.com/yourorg/fjtui/blob/main/CONTRIBUTING.md) file for guidelines on contributing to this project.
---
*This README is generated by a tool and may require manual updates.*
However a simple ask like a system diagram had it fall down again
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Update /home/builder/Workspaces/fjtui/README.md with a system diagram" --cwd /home/builder/Workspaces/fjtui/
The requested operation **`mcp 'systemdiagram'`** is not recognized or supported by the current set of tools and functions provided. There is no tool named `systemdiagram`, nor does the list include a function that matches that identifier.
If you meant to request something else—such as generating a diagram from another source, reading files related to a system diagram, or using a different MCP resource—please clarify your request, and I’ll be happy to assist with an appropriate tool.
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Update /home/builder/Workspaces/fjtui/README.md with a system diagram" --cwd /home/builder/Workspaces/fjtui/
I’m sorry—I cannot access that directory (`/home/builder/Workspaces`) because it isn’t part of the allowed file system locations for this environment. If you can provide a path within the permitted workspace (e.g., `~/my‑project/config.yaml` or another location shown as available), I’d be happy to read or modify the file for you. Let me know how you’d like to proceed!
builder@bosgamerz9:~/Workspaces/fjtui$ crush run "Update /home/builder/Workspaces/fjtui/README.md with a system diagram" --cwd /home/builder/Workspaces/fjtui/
I’m sorry, but the MCP server named **`fjtui`** isn’t listed among the available servers in this environment, so I’m unable to retrieve or interact with it as requested. If you have another server name or a different request, please let me know!
Though, I tried with Cline a few times just to have a comparison and it too just hates to write files
GCA one more time
Gemini Code Assist, GCA, the first offering by Google after Github Copilot will die an untimely death in the next couple weeks on June 18th.
I wanted to revisit why I liked it and will be saddened by it’s loss.
First, launching vs code from WSL on Windows let’s use fire up GCA with ease:
Here you can see it easily handle a TUI Readme that Crush was having such troubles with:
And perhaps it’s not really going away for everyone. To be clear, the offering i had with AI Pro, a paid plan, is just being taken away from us.
I can supposedly keep it with Gemini Code Assist for Enterprise, or Gemini CLI if I use it with a paid Vertex AI key
part of the reason I so enjoyed GCA, even if it wasn’t as polished as other tools, was it was a way I could leverage my AI Pro accounts in Coder
As it stands, going forward, there will be no official VS Code extension I can use and will only be able to use Gemini models via things like Cline and Continue.dev plugins - which is pay as you go, not leveraging the AI Pro subscription.
It would seem the only supported path to using AI Pro in Coder would be via agy CLI in the terminal which would work, but seems a “lesser” option.
You might say, use AI Studio - that’s an officially supported web interface.
But it seems really basic - like comparing KidPix to Photoshop. I mean i get “enjoy these tips while you wait” animated slides - who does that?
So for example, I asked for a TUI animation for a TUI I’m working on and after 5+ minutes it made a webapp
I can download that as a zip file or publish to Antigravity in Windows
Or send to Github
As of today, that is the only choice. Github or nothing at all. Don’t get the wrong idea, I don’t hate Github, but I do have issues with a lack of choice.
With Coder, I can can use Gitea for instance
or Forgejo in code-server
then I can use GCA to update the code in my private repos
Summary
Charm Crush is a pretty nice CLI. It certainly is one of the better looking. It worked fine with Cloud AI providers, but I really struggled getting it to work with local Ollama ones. I tried with Linux, Windows and GPU and CPU hosted instances. I tried small 2b models through 27b, the largest my hardware can run. My biggest frustration was the “To-Do” list that would just die out.
I won’t give up - if I can get better hardware, I’ll circle back on this. But for now, I’ll just keep it in my back pocket.
The other footnote on this article is saying goodbye to GCA and Gemini CLI. Gemini CLI was (and is) one of my favourites. I enjoyed the extensions, and OTel support. I enjoyed the benefits of an insider track to converse with the creator on a nearly weekly basis for a while.
I do not have the same warm and fuzzy feeling towards Antigravity CLI. I might use it, albeit begrudgingly, as it’s a closed-source tool that at launch, at least, had a lot of issues. I also just tend to avoid any tool that requires a raw ‘deb’ to install. Seems a bit shady to me. Give me npx, uv, brew or even choco any day.




































