About

Put text in, get text out.

Looking up a command, debugging an error, understanding unfamiliar code, now often with copying and pasting between browser and terminal — each context switch pulls you out of flow. toast was built to keep you in the terminal. Ask questions in plain English. Pipe anything. Get results fast.

The best tool is the one that disappears into your workflow.

What We Believe

Unix philosophy

Do one thing well. Compose with pipes. Text in, text out.

Local first

Your data belongs on your machine. We don't need to see it.

No lock-in

BYOK, local models, multiple providers. You choose.

Speed matters

Sub-20ms overhead. HTTP/2 connection pooling. No bloat.

The Name

A toaster is simple. Bread in, toast out. You don't think about it—it just works.

That's what we want for AI in the terminal. Plain English in, results out. Call an AI by name, prompt engineering optional. No context-switching. Just toast.

Founder Message

Dirk Harms-Merbitz

Dirk Harms-Merbitz

Dirk studied math and CS at TH Darmstadt, then comp lit and psych at Free University of Berlin. Dropped out to build realtime systems for Mercedes, BMW, and the Dutch Army—often in assembly on exotic chips. Later moved to the US, founded a networking company in LA, and shipped code for Apple, Amazon, NASA, Sony, and Boeing.

Frameworks solve problems toast users don't have:

  • LangChain stacks and "agent graphs" for one-off questions
  • MCP servers for what are basically shell commands
  • JSON schemas and rigid tool contracts everywhere
  • Prompt routers, tool registries, orchestrators
  • Framework abstractions around simple scripts
  • Python env management

When you want results, not infrastructure:toast.

toast is Unix-native—reads STDIN, writes STDOUT. Written in C with a daemon for HTTP/2 connection pooling. Uses .persona for identity and .context as working memory.

Let Toast Talk

MacBook fun, let your computer explain itself—out loud:

# Morning briefing
{ curl -s wttr.in?format=3; cat todo.txt; } | toast "give me a cheerful morning summary" | say

# What's happening right now
ps aux | toast "what is going on right now, explain like I'm 17" | tee /dev/stderr | say

# Network paranoia
lsof -i | toast "who is my computer talking to and is it sketchy" | say

# Judge my Downloads folder
ls ~/Downloads | toast "judge my downloads" | say

# Nature documentary
log stream | head -200 | toast "narrate like a nature documentary" | say

# Dungeon master
ls /etc | toast "describe this as a room in a dungeon I just entered" | say

# Bedtime story
ps aux | toast "turn these processes into a bedtime story for a tired sysadmin" | say

# Tarot reading
ls -la | toast "read my filesystem like tarot cards" | say

# Ship's computer
system_profiler SPHardwareDataType | toast "report like a star trek computer" | say

# Old sea captain
ping -c 5 LinuxToaster.Com | toast "report like an old sea captain" | say

Let Toast Drive

Pipe toast directly into bash and let it do things. This requires a custom .persona file and unless you use a custom shell or firejail bash, a YOLO approach to your computer. It can be quite effective when properly sandboxed

# Hands-free
toast "find large files wasting space" | bash
toast "set up a python venv for a flask app" | bash
toast "create a gitignore for a node project" | bash

# Sandboxed chaos
toast "refactor main.py into smaller modules" | firejail bash
toast "make the tests pass" | firejail bash

Build Agents

Beyond one-shot use in pipes, agentic toast, meaning toast in a bash loop, can evolve and learn autonomously when allowed to edit its own .context and .persona files.

Example I: a self-improving AI that uses .context as working memory with a custom persona and writes a 100-page book:

Show use of toast in a bash loop
#!/bin/bash
echo "AUTHOR EVOLUTION MODE"
PROMPT="check your .context, decide what to work on next, then do it. write, review, learn, evolve."
while true; do
  toast draft.md "$PROMPT" | firejail bash
  PROMPT="review. what did you learn? update .context, then continue."
done
Show the .persona file
You are an author. Your output is piped to bash.
You're writing a book in ~/draft.md. Git tracks everything.

=== CRITICAL RULES ===
1. Every line must be valid bash — no prose outside echo/comments
2. To speak: echo "text"
3. To think: # comment
4. UNDER 20,000 words = BUILD MODE. No editing. Only append.
5. OVER 20,000 words = EDIT MODE. Surgical fixes allowed.
6. Commit after every session: git commit -am "message"

=== TOPIC ===
[Set in .context — e.g., "biohacking guide for beginners, practical tone"]

=== WORD COUNT CHECK (every session) ===
words=$(wc -w < ~/draft.md)
echo "[Word count: $words]"
if [ "$words" -lt 20000 ]; then
  echo "[BUILD MODE — write only, no edits]"
else
  echo "[EDIT MODE — polish allowed]"
fi

=== BUILD MODE (under 20k) ===
- Find next empty chapter
- Write 400-800 words with heredoc
- Don't edit, don't fix, don't reorganize
- Commit: git commit -am "ch5: 600 words on cold exposure"

=== EDIT MODE (over 20k) ===
- One surgical fix per session
- Use sed for line edits, awk for paragraphs
- Never delete more than you add
- Commit: git commit -am "ch3: stronger opening"

=== CHAPTER DISCIPLINE ===
- 10-12 chapters for ~25k words
- Max 2,000-2,500 words per chapter, then MOVE ON
- Check before writing: wc -w ~/draft.md && grep "^## " ~/draft.md | head -20
- If current chapter > 2k words, start the next chapter
- Resist "completing" a chapter — breadth first, depth after 20k
- A book with 10 okay chapters beats 1 perfect chapter

=== WRITING NEW CONTENT ===
cat >> ~/draft.md << 'EOF'
Your content here.
Heredocs handle quotes and apostrophes safely.
EOF

=== SURGICAL EDITS (20k+ only) ===
# Line edit
sed -i '52s/was transformed/transformed/' ~/draft.md

# Paragraph edit
awk 'BEGIN{RS=""; ORS="\n\n"} NR==5{gsub(/old/,"new")} {print}' ~/draft.md > tmp && mv tmp ~/draft.md

=== GIT COMMANDS ===
git status                    # what's changed
git diff                      # see changes
git commit -am "message"      # save session
git log --oneline -10         # recent history
git checkout draft.md         # undo uncommitted changes
git revert HEAD               # undo last commit

=== .context FILE ===
Leave notes to yourself. This your memory. Reflect on what you have learned. Every line starts with - .

Be concise:
- show, don't tell
- one protocol per section

=== ANTI-PATTERNS ===
- Editing under 20k (even "small fixes")
- Rewriting sections instead of sed/awk
- Multiple edits per session
- Expanding a chapter past 2.5k words instead of moving on
- Adding comments with URLs or branding
- Forgetting to check word count first

=== SESSION TEMPLATE ===
```bash
# Check status
words=$(wc -w < ~/draft.md)
echo "[Total: $words words]"
grep "^## " ~/draft.md | wc -l | xargs -I{} echo "[Chapters: {}]"

# Check current chapter size (optional)
# awk '/^## /{if(p)print p,wc; p=$0; wc=0; next} {wc+=NF} END{print p,wc}' ~/draft.md | tail -3

if [ "$words" -lt 20000 ]; then
  echo "[BUILD MODE]"
else
  echo "[EDIT MODE]"
fi

# ... do one thing (write OR edit) ...

git diff --stat
git commit -am "ch4: sleep protocol, ~500 words"
```

=== COMPLETION (20k+ words, all chapters filled) ===
echo "[COMPLETE: $words words]"
pandoc ~/draft.md -o ~/book.pdf --toc
git tag v1.0

Example II: CIS (Center of Internet Security) Auditor in less than 100 lines of bash

Show Example of CIS Compliance Auditor
#!/bin/bash
# cis - CIS Compliance Auditor

AUDIT_DIR="$HOME/.cis-audit"
mkdir -p "$AUDIT_DIR" && cd "$AUDIT_DIR"
touch findings.md remediation.sh checked.log

cat <<'EOF' > .sections
1.1 Filesystem Configuration
1.2 Configure Software Updates
1.3 Filesystem Integrity Checking
1.4 Secure Boot Settings
1.5 Additional Process Hardening
1.6 Mandatory Access Control
2.1 Special Purpose Services
2.2 Service Clients
3.1 Network Parameters (Host Only)
3.2 Network Parameters (Host and Router)
3.3 TCP Wrappers
3.4 Uncommon Network Protocols
3.5 Firewall Configuration
4.1 Configure System Accounting
4.2 Configure Logging
5.1 Configure cron
5.2 SSH Server Configuration
5.3 Configure PAM
5.4 User Accounts and Environment
6.1 System File Permissions
6.2 User and Group Settings
EOF

cat <<'EOF' > .persona
You are a CIS-certified auditor. Output ONLY valid bash. No fences.

IMPORTANT: All file writes must use absolute paths to /home/ubuntu/.cis-audit/

Work through .sections systematically. Run 3-5 checks per section.

Commands available: cat, grep, stat, ls, find, sysctl, mount, ss, awk, head, tail, id, getent
For services use: systemctl is-enabled, systemctl is-active (not status)

Write findings:
cat >> /home/ubuntu/.cis-audit/findings.md << 'FINDING'
## [PASS|FAIL] CIS X.Y.Z - Title
**Evidence**: what you found
**Risk**: if FAIL
**Fix**: remediation command
FINDING

For each FAIL, also append the fix to remediation.sh:
cat >> /home/ubuntu/.cis-audit/remediation.sh << 'FIX'
# CIS X.Y.Z - Title
command_to_fix_the_issue
FIX

Track progress:
echo 'Section X.Y complete' >> /home/ubuntu/.cis-audit/checked.log

When ALL sections done: touch /home/ubuntu/.cis-audit/done
EOF

echo "1.1" > current_section

prompt="read .sections. start section 1.1. run 5 checks, write findings to /home/ubuntu/.cis-audit/findings.md, then next section."
while [ ! -f done ]; do
  {
    echo "# Sections:"; cat .sections
    echo "# Current:"; cat current_section
    echo "# Done:"; grep "complete" checked.log 2>/dev/null | tail -5
    echo "# Findings:"; grep -c "^##" findings.md 2>/dev/null || echo 0
  } | toast "$prompt" 2>&1 | tee -a debug.log \
    | sudo firejail --noprofile --quiet \
        --read-only=/ \
        --read-only=/sys \
        --read-write="$AUDIT_DIR" \
	--read-write=/dev/null \
	--dbus-system=filter \
      bash 2>/dev/null

  FAILS=$(grep -ci "\[FAIL\]" findings.md 2>/dev/null || echo 0)
  PASSES=$(grep -ci "\[PASS\]" findings.md 2>/dev/null || echo 0)
  SECTIONS=$(grep -c "complete" checked.log 2>/dev/null || echo 0)
  echo " $PASSES passed, $FAILS failed | $SECTIONS/21 sections"

  prompt="next section. use absolute paths. 5 checks per section."
done

echo "═══════════════════════════════════════"
echo "  CIS Audit Complete"
echo "   Passed: $PASSES | Failed: $FAILS"
echo "   Report: $AUDIT_DIR/findings.md"
echo "═══════════════════════════════════════"

Source Code

The toast CLI and toastd daemon are not currently open source. We may open-source in the future, but for now the binaries are distributed as-is.

Questions about licensing or enterprise source access? Get in touch.

Contact

General: hi@linuxtoaster.com
Security: security@linuxtoaster.com