OLLMchat is an AI application for interacting with LLMs (Large Language Models) such as Ollama and OpenAI. It has a full chat interface and a code assistant with semantic codebase search. The main application is a complete AI chat client, built from reusable libraries that other applications can use. The project is written in Vala, with GTK4 for the desktop UI.
The application is split in two. ollmfilesd is the file server: it handles file operations, file monitoring, and running applications, and it can run on another machine. The desktop and mobile clients talk to that server. A client can run on the same machine as the server, or on a separate desktop, tablet, or phone.
Development status: The chat client, tools, and file server are in everyday use. The skills / task-runner pipeline in liboccoder is mostly working and still early — useful for multi-step agent work, with rough edges. Local GGUF inference via CallLocal is optional at build time.
- Main Application (
ollmchat) - A complete AI chat client with:- Full-featured chat interface for interacting with LLMs (Ollama/OpenAI)
- Settings dialog with model search and download from Ollama
- Code assistant agent with semantic codebase search capabilities
- Chat history management with session browser
- Tool integration: ReadFile, EditMode, RunCommand, WebFetch, CodebaseSearch (semantic search), and MCP servers (Model Context Protocol)
- Project management and file tracking
- Support for multiple agent types (Just Ask, Code Assistant)
- Core libraries - Chat, files, editor, markdown, and the file server
libollmchat.so- Ollama/OpenAI API access, agents, and optional local GGUF backendlibollmchatgtk.so- GTK chat widgetslibocmarkdown.so- Markdown parsing and renderinglibocmarkdowngtk.so- Markdown rendering widgetslibocsqlite.so- SQLite query builderlibocrpc.so- Binary RPC wire types for clients of the file serverlibocfiles.so- Client-side file and project managementliboccoder.so- Code editor, skills/task runner, and project managementlibocvector2.so- Vector index and semantic search, used by the file serverollmfilesd- File server (file operations, monitoring, application execution, and semantic indexing; not a shared library)
- Tool libraries - Agent tools and live model catalogs
liboctools.so- File, command, web fetch, and codebase-search toolslibocmcp.so- MCP (Model Context Protocol) client: load servers from~/.config/ollmchat/mcp.json, discover tools, and expose them asmcp:{server_id}:{tool_name}libollamaweb.so- Live search and model metadata from ollama.com
- Example Tools - Command-line utilities demonstrating library capabilities:
ollmchat-cli- Command-line LLM chat and agent-tool testing (models, chat, streaming,--agent-tool)oc-test-files- Test tool for file operations (read/write files with line ranges, project management, buffer operations, backups)oc-markdown-test- Markdown parser test tool (parses markdown and outputs callback trace)oc-html2md- HTML to Markdown converter (reads HTML from stdin, outputs Markdown)oc-md2html- Markdown to HTML converter (converts markdown file to HTML)oc-diff- Unified diff tool (compares two files and outputs differences in unified diff format)oc-vector-index- Codebase indexing client for the file serveroc-vector-search- Semantic code search client for the file serveroc-migrate-editors- Project migration tool (migrates projects from Cursor editor configuration)oc-test-fetch- Web fetch test tool (fetches web content from URLs with format conversion support)
Risky commands, such as executing bash and posting browser data, require approval. Approval can be permanent or temporary.
As with Pi, you can edit the prompt templates.
Screencast.From.2025-12-31.17-22-54.mp4
This is using gpt-oss to implement a plan and create code
Screencast.From.2025-12-09.17-10-55.mp4
This is the basic bootstrapping window - and a walk around some of the earlier features.
Note: If the videos above dont display, you can
Online API documentation is available:
- ollmchat API Reference - Unified library documentation (base and UI)
Implementation plans and roadmap:
- Building from source - Meson/Ninja, dependencies, and uninstalled runs
- Implementation Plans Summary - Overview of all planned features with status indicators
- MCP server settings - How to configure
mcp.jsonfor Model Context Protocol tools - Binary RPC wire format - On-the-wire layout for
ollmfilesd↔ client (libocrpc)
Development standards (written for AI agents; mandatory for agents, helpful guides for human contributors):
- Coding standards - Vala style and patterns
- Build rules - Meson/Ninja workflow for agents
- Code documentation - Valadoc markup for docblocks
- Guide to writing plans - Plan layout, checklist, and implementation workflow
- Project structure - Libraries, the file server, and directory layout
- Creating releases - How tagged releases and CI packaging work
Set up the APT or RPM repository from the roojs package repositories page, then:
sudo apt install ollmchatsudo dnf install ollmchatWindows, Android, and AppImage builds are on the GitHub Releases.
This project was developed with the assistance of artificial intelligence.
- Architecture and design direction are human-led
- AI’s main role was writing implementation for review
- Most of the coding was performed by AI
- Changes were reviewed, revised, and approved before landing
- Application code is treated as author-approved
Limited exceptions apply mainly to build scaffolding.
This project is licensed under the GNU Lesser General Public License version 3.0 (LGPL-3.0). See the LICENSE file for details.
Exceptions (third-party / derived files, e.g. Pi MIT prompt text): see licenses/README.md.