Skip to content

llmrb/robert

Repository files navigation

Robert logo
Robert

About

Robert is an AI assistant that helps you learn FreeBSD by reading official man pages and documentation. It runs entirely in your terminal and ships as a statically linked, ~3MB binary - no dependencies, no Electron, no browser needed.

Ask questions about FreeBSD in plain English. Robert searches man pages, reads them, and answers with cited excerpts from the official docs - not its training data. It runs on DeepSeek and costs pennies to use.

The website has a full screencast and more screenshots.

Quick start

1. Download the latest release

fetch https://github.com/llmrb/robert/releases/download/v0.5.2/robert
chmod +x robert

2. Set your DeepSeek API key

export DEEPSEEK_SECRET="sk-..."

3. Run it

./robert

Appearance

Boot - shows a random FreeBSD tip, like ${HOME}/.profile does.

robert1.png

First turn - simple greeting.

robert2.png

Second turn - question answered from the FreeBSD man pages.

robert3.png

Tool confirmation - reading and searching man pages is automatic. Reading files requires confirmation.

robert4.png

Tools

Robert chains these tools autonomously: it searches, reads, and synthesises answers without hand-holding. It only pauses for confirmation when reading files.

Tool Description Confirmation
man-page Returns the contents of a man page (optionally by section) No
man-search Searches manual pages for keywords via apropos No
read-file Reads a file from the filesystem Yes
version Reports Robert's version number No

How it works

Robert is built on mruby-llm, the mruby port of llm.rb. The architecture is designed for a single-purpose terminal app:

  • Cooperative task scheduler

    The LLM call runs in a worker task while the event loop keeps the UI responsive.

  • Streaming TUI

    Tokens arrive from the API and render incrementally in the chat widget, with live tool-call status.

  • Roff sanitisation

    Raw man output often includes overstrike sequences (_\b/ for underlined /). Those are stripped before they reach the model, preventing garbled paths.

  • Grounded answers

    The system prompt explicitly forbids using training data. Every claim must cite a man page via blockquote. Off-topic questions are gently redirected.

The binary is a single C file (main.c) that bootstraps an mruby VM and loads the compiled irep. The Ruby application code, TUI framework, HTTP client, TLS, and LLM bindings are all linked statically. The result is a self-contained 3MB binary.

Download

Pre-built static binaries for FreeBSD 15-STABLE and 16-CURRENT can be downloaded from GitHub Releases. Each tagged release publishes a robert binary; the latest stable release is v0.5.2.

Build from source

Robert is an mruby gem built with the mruby-llm runtime.

git clone https://github.com/llmrb/robert.git
cd robert
make

The Makefile expects an mruby checkout at ../mruby. Override with MRUBY_DIR=/path/to/mruby if needed. Run make static for a statically linked binary (~3MB) or make for a dynamically linked one (~2MB).

Association

This project belongs to the llm.rb family of projects. mruby-llm is a port of llm.rb to mruby.

License

0BSD. See LICENSE.

About

Robert is a long-time FreeBSD user.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors