Philosophy
Get out of the model's way.
Core Principles
Simplicity Above All
With every design decision, pick the simplest possible option.
- Where do you run commands? Locally.
- Where do you store data? Local files and SQLite.
- How do you communicate? Unix sockets.
- What UI do you need? A terminal.
No virtualization. No containers. No cloud. No electron wrappers.
Let the Model Breathe
The model can do more than most products let it. Don't hobble it.
- Minimal system prompts — personality, not instructions
- Fewer tools, not more — consolidate, don't proliferate
- Agentic by default — model loops until it decides it's done
- No guardrails that assume incompetence
When you add "helpful" features, you often limit the model. Resist the urge.
Note: OWL has safety limits (max 50 tool iterations, 10 message history, 300s timeout) to prevent runaway loops and manage resources. These are practical safeguards, not restrictions on model capability.
Delete Code on Upgrades
Every time there's a better model:
- Delete system prompt complexity the model no longer needs
- Remove workarounds for old model weaknesses
- Consolidate tools the model can now handle more generally
- Strip guardrails that compensated for limitations
The goal is less code over time, not more.
Raw Model, Minimal Wrapper
Users should feel the model as directly as possible.
- No UI clutter between user and model
- No scaffolding that filters or reshapes responses
- Stream tokens directly — don't buffer and process
- The model's voice, not a product's voice
Local-First, Always
Privacy and simplicity align:
- All inference runs locally via Ollama
- All data stays on your machine
- No API keys, no accounts, no telemetry
- Works offline, works forever
What This Means
| Do | Don't |
|---|---|
| Write less code | Add UI for things the model can figure out |
| Trust the model | Create tool variants for edge cases |
| Use standard tools (files, sockets, sqlite) | Build elaborate prompt chains |
| Keep the CLI minimal | Add configuration for hypothetical needs |
| Delete features that don't earn their complexity | Optimize for demos over daily use |
Permission System
Running locally means the model can do real things. This power requires trust, and trust requires control.
Core Principle
If you start OWL, it shouldn't change things on your system without permission.
But we also give ways to opt out: "In this context, don't ask me every time."
Permission Modes
OWL uses mode-based permissions. Switch modes with /mode:
| Mode | Behavior |
|---|---|
default | Ask before edits and commands |
auto-edit | Allow edits, ask for commands |
plan | Read-only mode |
yolo | Allow everything |
Permission Flow
When OWL wants to do something that needs approval:
┌─────────────────────────────────────────────┐
│ OWL wants to: delete_file("config.yaml") │
├─────────────────────────────────────────────┤
│ Allow? [y/n]: │
└─────────────────────────────────────────────┘
- y — Allow (remembered for this session)
- n — Deny
Dangerous Commands
Some commands always require confirmation, even in yolo mode:
- Destructive:
rm -rf /,rm -rf ~ - Sudo: any command starting with
sudo - Disk:
mkfs,dd if=,fdisk,parted - System:
shutdown,reboot,systemctl stop - Network:
iptables -F,ufw disable - Permissions:
chmod -R 777 /,chown -R - Fork bombs
Environment Variables
Override permissions via environment:
OWL_ALLOW_TOOLS=read_file,write_file
OWL_DENY_TOOLS=run_command:rm *
The Vision
OWL should feel like talking directly to an AI that lives on your machine — one that remembers you, knows your projects, and grows alongside you.
Not a product. Not a platform. Just a wise companion with a growing soul.
Inspired by the Claude Code team's philosophy: "We want people to feel the model as raw as possible."