Cheatsheet
Quick reference for mini-a. Bookmark this page.
Installation
opack install mini-a
Alias (Optional)
# Zsh
echo 'alias mini-a="opack exec mini-a"' >> ~/.zshrc && . ~/.zshrc
If alias setup is not available, run commands as opack exec mini-a [...].
Model Setup
| Provider | Config |
|---|---|
| OpenAI | export OAF_MODEL="(type: openai, model: gpt-5-mini, key: '...')" |
export OAF_MODEL="(type: gemini, model: gemini-2.0-flash, key: '...')" |
|
| Anthropic | export OAF_MODEL="(type: anthropic, model: claude-sonnet-4-20250514, key: '...')" |
| Ollama | export OAF_MODEL="(type: ollama, model: 'llama3', url: 'http://localhost:11434')" |
| Bedrock | export OAF_MODEL="(type: bedrock, options: (region: eu-west-1, model: 'anthropic.claude-sonnet-4-20250514-v1:0'))" |
| Bedrock GPT-5.6 Luna | export OAF_MODEL="(type: bedrock, options: (region: eu-west-1, model: global.openai.gpt-5.6-luna), timeout: 900000)" |
| GitHub | export OAF_MODEL="(type: openai, url: 'https://models.github.ai/inference', model: openai/gpt-5, key: $(gh auth token), apiVersion: '')" |
Running mini-a
| Command | Description |
|---|---|
mini-a |
Interactive console |
mini-a goal='...' |
Direct goal |
mini-a onport=8080 |
Web UI |
mini-a chatbotmode=true |
Chatbot mode |
mini-a modelman=true |
Model manager |
mini-a --skills |
Starter self-contained SKILL.yaml template |
# Authenticated Advanced console; prints/opens a generated-token access URL
mini-a onport=8888 webadvanced=true useattach=true usestream=true
# Standalone wiki operations manager (read-only inspection)
mini-a wikiman=true wikiroot=./wiki
# Model-free auto-maintenance preview
mini-a dream=true dreammode=wiki dreamwikimode=auto usewiki=true wikiroot=./wiki dryrun=true
See Advanced web, attachments and local history.
Console Commands
| Command | Action |
|---|---|
/help |
Show commands |
/model [main\|lc\|val\|dec] |
Choose a model definition for a slot (/model opens an interactive slot picker) |
/models |
Show configured main, LC, validation and decision slots with provider and source |
/show [prefix] |
Show active parameters |
/set <key> <value> |
Update a parameter (use """ for multi-line values) |
/toggle <key> |
Toggle a boolean parameter |
/unset <key> |
Clear a parameter |
/reset |
Restore default parameters |
/restore |
Restore a saved conversation like resume=true |
/skills [prefix] |
List discovered skills |
/skills search\|recommend <text> |
Search a virtual skill library (with useskillswiki=true) |
/skills open\|read\|related\|compose <ref> |
Inspect, read a section of, or relate a library skill |
/compact [n] |
Compact older history, keep up to latest n exchanges (default 6) |
/summarize [n] |
Summarize older history, keep up to latest n exchanges (default 6) |
/context |
Show token/context breakdown |
/context vm |
Show History VM object state and token-delta diagnostics |
/last [md] |
Reprint last final answer (md for raw markdown) |
/save <path> |
Save last final answer to a file |
/edit [last] |
Compose the next goal (or revise the previous goal) in the configured editor |
/stats [mode] [out=file.json] |
Usage statistics (summary, detailed, tools, memory, wiki) |
/wiki context |
Compact wiki overview: page count, sections, mounts, recent log |
/wiki list [prefix] |
List wiki pages (optionally filtered by prefix); add --meta for title+description |
/wiki read <page.md> |
Print a wiki page |
/wiki search <query> |
Full-text search across wiki pages and mounts |
/wiki browse [path] |
Navigate section structure |
/wiki tree [path] |
Show full folder hierarchy |
/wiki backlinks <page.md> |
Show pages linking to this page |
/wiki lint |
Run wiki health checks (broken links, orphans, stale pages) |
/wiki reindex |
Rebuild wiki search index (requires wikiaccess=rw) |
/wiki move <from.md> <to.md> |
Move page and rewrite links (requires wikiaccess=rw) |
/wiki init [section/] |
Create section index (requires wikiaccess=rw) |
/wiki mounts |
List active read-only mounts |
/wiki attach <name> [backend=fs] [root=path] |
Mount a read-only wiki |
/wiki detach <name> |
Unmount a wiki |
/ingest <source> [section] [dryrun] [force] |
Distil a docs folder, repository, or URL into wiki pages (requires wikiaccess=rw) |
/ingest recovery |
Inspect pending journals; resume <id> or explicitly discard <id> |
/absorb plan <spec> |
Plan selected knowledge from local wikis; then show, apply, status, resume, or delete |
/wiki compact [offline=true] |
Preview local V2 cleanup; apply only after stopping other readers/writers |
/rewind [n] |
Undo the last n user+assistant exchanges (default 1); cancels any active subtasks |
/dream [memory|wiki] [plan|apply|reorg|dryrun] |
Run memory and/or wiki dream consolidation pass (shown when memorych or usewiki=true is set) |
/history [n] |
Show recent user goals from conversation history |
/exit |
Exit mini-a |
/clear |
Reset conversation history and accumulated metrics |
/cls |
Clear screen |
Key Parameters
| Parameter | Default | Description |
|---|---|---|
agent |
- | Agent profile (markdown file path or inline markdown) |
agentfile |
- | Backward-compatible alias for agent |
goal |
- | The task to accomplish |
useshell |
false |
Enable shell commands |
readwrite |
false |
Allow file writes |
chatbotmode |
false |
Chat-only mode |
maxsteps |
15 |
Max agent steps |
maxcontext |
0 |
Max context tokens; 0 leaves proactive compaction off (set e.g. 50000 for long sessions) |
maxcontent |
- | Alias for maxcontext |
contextguard |
false |
Context and tool-output guardrails when maxcontext is unset |
maxtokens |
- | Max output tokens |
deepresearch |
false |
Enable iterative research/validation cycles |
validationgoal |
- | Quality criteria for deep research |
valgoal |
- | Alias for validationgoal |
vmodel |
- | Optional dedicated validation model used in deep-research scoring |
modelval |
- | Runtime override for the validation model (OAF_VAL_MODEL format) |
maxcycles |
3 |
Max deep research cycles |
validationthreshold |
PASS |
Validation verdict/score required to stop |
persistlearnings |
true |
Carry learnings forward between cycles |
useplanning |
false |
Enable planning |
useutils |
false |
Built-in utilities; with usestdutils=true exposes read, glob, grep, webfetch, etc. |
usestdutils |
false |
Expose standard tool aliases instead of legacy Mini Utils names (requires useutils=true; poweruser enables it) |
mini-a-docs |
false |
Docs-aware Mini Utils root (markdownFiles) when utilsroot is unset |
miniadocs |
false |
Alias for mini-a-docs |
useskills |
false |
Expose local skill operations; registers only skills when useutils=false |
skillmaxautoload |
1 |
Maximum number of high-confidence matching skills to auto-load into bounded runtime context |
skillcontextchars |
8000 |
Initial local-skill page ceiling; complete sections load progressively |
skillmanifestchars |
1536 |
Approximate character budget for skill descriptions in the system prompt manifest |
usetools |
false |
Enable tool use |
usetoolslc |
false |
Register MCP tools only on the low-cost model; main model stays in prompt/action mode |
usejsontool |
false |
JSON action loop; disables native tools. Auto-enabled for GPT-OSS or tools + proxy unless explicitly overridden |
toollog |
- | JSSLON channel for MCP tool call logs (input/output) |
auditch |
- | Channel for agent activity audit log (tool calls, shell commands, goal events) |
debugch |
- | Channel for main-model LLM request/response payloads |
debuglcch |
- | Channel for low-cost model LLM request/response payloads |
debugdecch |
- | Decision request/response debug channel or native file path |
debugfile |
- | Write debug output to a NDJSON file (implies debug=true) |
debugvalch |
- | Separate debug channel for the validation model |
outfileall |
- | Deep research only: save full cycle outputs (not only final answer) |
shelltimeout |
- | Max shell command runtime (ms) before timeout |
shellmaxbytes |
8000 |
Cap shell output size and truncate with head/tail excerpt |
shellallowpipes |
false |
Allow pipes, redirection, and shell control operators |
usestream |
false |
Stream responses |
showexecs |
false |
Show shell/exec events as separate lines in the interaction stream |
showseparator |
true |
Show a separator line between interaction events (disable for compact view) |
browsercontext |
- | Browser context configuration or true to auto-enable browser control for supported tools |
showthinking |
false |
Surface XML-tagged <thinking>...</thinking> blocks as thought logs |
useeditor |
false |
Open every console goal in editor, $EDITOR, or vi before submitting |
editor |
- | Editor command used by useeditor and /edit (supports quoted arguments, e.g. "vim -f") |
promptprofile |
context-dependent | System prompt verbosity: minimal, balanced, or verbose (minimal in chatbot mode; verbose with debug=true; otherwise balanced) |
systempromptbudget |
— | Max estimated tokens for the system prompt; drops lower-priority sections when exceeded |
goalprefix |
— | Prefix automatically prepended to every goal before the agent sees it |
compressgoal |
false |
Enable automatic compression of oversized goal text before execution |
compressgoaltokens |
250 |
Estimated token threshold before goal compression is considered |
compressgoalchars |
1000 |
Character threshold before goal compression is considered |
usemath |
false |
Enable LaTeX math guidance for KaTeX rendering in web UI |
usesvg |
false |
Enable SVG generation for custom visuals and infographics |
usediagrams |
false |
Enable diagram generation |
usemermaid |
false |
Alias for usediagrams |
usecharts |
false |
Enable chart generation |
usevectors |
false |
Enable vector bundle (usesvg=true + usediagrams=true) |
mcp |
- | MCP servers to load |
mcpproxy |
false |
MCP proxy mode |
mcpproxythreshold |
0 |
Proxy auto-spill byte threshold (0 disables); large results written to temp file |
mcpproxytoon |
false |
TOON serialization for spilled proxy results |
mcpproxyallow |
- | Comma-separated allowlist of downstream tool names exposed through proxy-dispatch |
mcpproxydeny |
- | Comma-separated denylist of downstream tool names hidden from proxy-dispatch (applied after mcpproxyallow) |
mcpprogcall |
false |
Enable localhost bridge for programmatic MCP tool calls |
mcpprogcallport |
0 |
Programmatic MCP bridge port (0 auto-selects) |
mcpprogcallmaxbytes |
4096 |
Max inline bridge response size before spill |
mcpprogcallresultttl |
600 |
TTL (seconds) for spilled bridge results |
mcpprogcallbatchmax |
10 |
Max tool calls accepted per bridge batch request |
maxpromptchars |
120000 |
Max accepted prompt size for incoming web prompts |
lccontextlimit |
0 |
Escalate to main model when low-cost model context gets too large |
deescalate |
3 |
Successful steps before returning from main model to low-cost model |
modellock |
auto |
Select model tier for normal steps: main, lc, or auto (recovery can still use the main model) |
lcjsonretries |
1 |
Extra same-step low-cost retries on invalid reply JSON before main-model fallback (0 disables) |
lcreplytool |
false |
Capture-only submit_reply MCP tool for LC recovery (OpenAI-compatible and Ollama adapters) |
orchestration |
manual |
auto selects planning/advisor/evidence-gate controls from deterministic complexity and risk signals |
modeldec / usedecide |
unset | Decision model override; explicit true enables gates/utility, false disables calls |
fileallow |
unset | Built-in local file/directory allowlist; [] denies covered access |
skillsautosearch |
conditional | Automatic selection; defaults on only with explicit usedecide and a decision model |
skillsautolimit |
5 |
Combined local/wiki candidate limit |
skillsmaxloaded / skillsmaxchars |
3 / 12000 |
Shared distinct-skill/guidance budgets |
contractfile / contractargs |
unset / empty | Explicit supervised contract and positional inputs |
savecontract / reusecontract |
false |
Independent accepted-contract publication/discovery opt-ins |
ingestlayout |
flat |
New mappings: flat names or sanitized source folders |
modelstrategy |
default |
default, advisor, delegate, supervised, or auto |
advisorenable |
true |
Enable advisor consultations when modelstrategy=advisor |
advisormaxuses |
2 |
Max advisor consultations per run when modelstrategy=advisor |
advisoronrisk |
true |
Allow advisor consults on risk signals |
advisoronambiguity |
true |
Allow advisor consults on ambiguity signals |
advisoronharddecision |
true |
Allow advisor consults for hard-decision checkpoints |
advisorcooldownsteps |
2 |
Min steps between advisor consultations |
advisorbudgetratio |
0.20 |
Fraction of session token budget advisor calls may consume |
emergencyreserve |
0.10 |
Portion of advisor budget reserved for high-risk/high-value consults |
harddecision |
warn |
Hard-decision checkpoint mode: require, warn, or off |
evidencegate |
false |
Enable lightweight evidence gating for non-trivial actions |
evidencegatestrictness |
medium |
Tuning level for evidence gate heuristics: low, medium, or high |
nologtrunc |
false |
Disable truncation of long log output lines (show full content) |
noagentsmd |
false |
Disable automatic discovery and injection of the nearest AGENTS.md file as a rule |
usewiki |
false |
Enable wiki knowledge base |
wikiaccess |
ro |
Wiki access: ro (read-only) or rw (read-write) |
wikibackend |
fs |
Wiki backend: fs (filesystem), s3, s3fs, or es (Elasticsearch/OpenSearch) |
wikiroot |
. |
Filesystem directory or read-only local .zip/.okt archive for the fs backend |
wikibucket |
- | S3 bucket name (s3 backend) |
wikimounts |
- | Read-only wiki mounts (SLON/JSON array): [{name: 'team', backend: 'fs', root: '/path'}] |
wikis3artifactprefix |
- | S3 prefix containing published Lucene/graph artifacts to hydrate into wikiindexdir |
wikirestrictprofile |
tight |
mcp-wiki-safe profile: tight, moderate, relaxed, or trusted-client off |
wikiretrievalv2 |
true |
Published passage retrieval; unpublished wikis retain legacy retrieval until /wiki reindex. Invalid published artifacts remain errors |
wikiretrievalconfig |
- | Validated SLON/JSON passage, cache, and artifact budgets for v2 |
wikitelemetry |
off | Aggregate retrieval counters only (no query text by default) |
useskillswiki |
false |
Virtual skill library (skillwiki tool, /skills search); reuses the usewiki wiki unless skillwikiroot, skillwikibackend, or skillwikimounts is set |
skillsmaxloaded / skillsmaxchars |
3 / 12000 |
Per-run bounds: distinct skills opened and skill-body characters read |
usememory |
false |
Enable the working memory subsystem |
memoryuser |
false |
Convenience preset: file-backed global + session memory at ~/.openaf-mini-a/, auto-promote facts,decisions,summaries, 30-day stale sweep |
memoryusersession |
false |
Convenience preset: enables usememory, session-only file-backed channel under ~/.openaf-mini-a/ |
memoryscope |
both |
Which store the agent reads from/writes to: session, global, or both |
memorych |
- | SLON/JSON definition of an OpenAF channel to persist the global memory store (use memorymd=true to store its global records as Markdown) |
memorysessionch |
- | SLON/JSON definition of a channel for session memory persistence (falls back to memorych) |
memorysessionid |
<agent-id> |
Session key used to namespace session memory in the channel |
memorymaxpersection |
80 |
Maximum entries kept per section before compaction drops stale/old ones |
memorymaxentries |
500 |
Hard cap on total entries across all sections |
memorycompactevery |
8 |
How many appends trigger an automatic compaction pass |
memorydedup |
true |
Suppress near-duplicate entries (85% word-overlap fingerprint) |
memorypromote |
"" |
Auto-promote selected sections from session to global memory at session end |
memorystaledays |
0 |
Mark unconfirmed global memory entries as stale after N days |
memoryinject |
relevant |
Inject section counts (summary), a goal-relevant durable subset (relevant), or full compact entries (full) |
memoryrelevantcap |
8 |
Maximum durable entries injected by memoryinject=relevant |
usememorywrite |
true |
Enable deliberate typed durable-memory writes by the model |
memorywritemax |
20 |
Maximum memory_write calls per run |
memorymd |
false |
Store global memory as path-keyed Markdown records in memorych |
memorysessionheader |
— | HTTP request header name used to derive the memory session ID in web mode (e.g. X-User-Id) |
llmcomplexity |
unset | Decision-based medium-complexity refinement; false disables, true also enables LC fallback |
metricsch |
- | SLON/JSON channel for recording periodic metrics snapshots — see Channels (note: backend options nest under options:, e.g. (name: 'mini-a-metrics', type: 'mvs', options: (file: 'metrics.db'), period: 5000)) |
usedelegation |
false |
Agent delegation |
delegationtimeout / delegationhardtimeout |
300000 / - |
Foreground wait and initial stall timeout (activity extends it) / optional absolute limit, in ms |
delegationmaxretries |
2 |
Maximum execution attempts for confirmed failures (unknown remote outcomes are never resubmitted) |
agentcomms |
- | Opt-in inter-agent communication (profiles parent-relay, direct, pubsub, shared-state; explicit grants) |
workers |
- | Remote worker URLs for delegation |
workertags |
— | Comma-separated tags appended to the default worker skill in the AgentCard |
usea2a |
false |
Use A2A HTTP+JSON endpoints for remote worker delegation |
apitoken |
— | Bearer token for authenticating requests to the worker API server |
autodelegation |
false |
Auto-delegate noisy/oversized tool results to a summarization sub-agent (requires usedelegation=true) |
autodelegationthreshold |
8192 |
Byte size threshold that triggers auto-delegation |
autodelegationmaxperstep |
2 |
Max auto-delegations per agent step |
noisytools |
"" |
Comma-separated tool names always auto-delegated regardless of result size |
subtasks |
"" |
Pipe-separated startup scout goals submitted before the main loop |
subtasksfile |
"" |
Path to YAML/JSON file of {goal, fork, args, timeout} startup task objects |
subtaskssequential |
false |
Run startup scouts (and all subtasks) one at a time instead of in parallel |
forkstatemaxbytes |
65536 |
Max bytes of serialized fork state transmitted to a remote worker |
toolfallback |
false |
Fall back to action mode when malformed pseudo tool calls are emitted by the model |
dream |
false |
Run in standalone dream-pass mode (memory/wiki consolidation) instead of a regular session |
dryrun |
false |
Preview dream-pass changes without writing anything back |
dreamwikimode |
apply |
Wiki dream mode: auto, plan, apply, reorg, repair, reindex, graph, indexes |
dreammemorymode |
apply |
Memory dream mode: plan or apply |
dreamwikidryrun |
false |
Propose wiki changes without writing (opt out of apply) |
dreamwikiapproval |
ask |
Reorg approval mode: auto, ask, never |
dreamwikireorg |
false |
Allow structural wiki reorg |
dreamreport |
— | Optional JSON output report path |
dreammaxsteps |
40 |
Total model-step cap for wiki auto/reorg |
maxauditrecords |
200 |
Maximum audit log entries included in the memory dream consolidation prompt |
onport |
8888 |
Default web port when web mode is selected |
maxpromptchars |
120000 |
Max accepted prompt size for incoming web prompts |
ssequeuetimeout |
120 |
Web SSE stream queue timeout in seconds |
logpromptheaders |
- | Comma-separated HTTP request header names to log alongside incoming web prompts |
usehistory |
false |
Enable conversation history persistence in web mode |
webadvanced |
false |
Enable authenticated Advanced console alongside Simple chat |
webadvancedpath |
~/.openaf-mini-a/web |
Advanced journals, settings and presets |
webtoken |
- | Shared authentication token; generated per run if Advanced is enabled and omitted |
wikiman |
false |
Standalone guided wiki operations manager |
dreamwikillm |
true |
Model proposals for auto maintenance; false keeps deterministic repairs |
dreamwikiinstructions |
- | Extra guidance for the restricted reorg goal |
useattach |
false |
Text, PNG/JPEG, Office/PDF uploads; binary: four files, 20 MiB combined |
historykeep |
false |
Keep finished web conversation history files instead of discarding them |
historypath |
- | Directory path used to store web conversation history files |
historyretention |
600 |
Web history retention window in seconds |
historykeepperiod |
- | Delete kept conversation files older than this many minutes |
historykeepcount |
- | Keep only the newest N kept conversation files |
historyvm / historyvmshadow |
false |
History VM: journal exact history and swap old large messages for retrievable references (needs a writable conversation=); shadow only measures |
contextvirtualization / contextvirtualizationshadow |
false |
Phase 2 multi-resolution context (requires historyvm=true); shadow dry-runs the projection |
historys3bucket |
- | S3 bucket used to mirror history files, including History VM snapshots (requires usehistory=true) |
historys3prefix |
- | S3 key prefix for mirrored history files |
historys3url |
- | S3 endpoint URL for history mirroring |
historys3accesskey |
- | S3 access key for history mirroring |
historys3secret |
- | S3 secret key for history mirroring |
historys3region |
- | S3 region for history mirroring |
historys3useversion1 |
false |
Use S3 path-style (v1) signing for history mirroring |
historys3ignorecertcheck |
false |
Disable TLS certificate checks for history S3 access |
homedir |
— | Override the home directory used to locate the .openaf-mini-a folder |
Runs, Policy, Evaluation, and Ingestion
# Choose an execution strategy per run; default stays unchanged
mini-a modelstrategy=auto goal="Verify the repository tests and report results"
# Main prepares a contract, LC executes; requires both model roles
mini-a modelstrategy=supervised goal="Verify the report." \
contractargs='"/project/report.json"' savecontract=true
# Explicit local skill request without automatic selection
mini-a useskills=true skillsautosearch=false \
goal='Use $local:mini-a-runtime-diagnostics to inspect the available runtime.'
# Preview source-folder mappings; requires a configured writable wiki to apply
mini-a ingest=true ingestsource=./docs ingestlayout=source ingestdryrun=true
# From the Mini-A checkout; calls the configured providers
mini-a eval=true evalfile=evals/skills.yaml evalout=/tmp/skills-eval.json
See Supervised Execution and decision integration.
# Durable, resumable run with a redacted JSONL trace
mini-a goal="..." durable=true runid=my-run
mini-a goal="..." resumerun=my-run
mini-a runstatus=my-run
# Bounded tool surface and centralized restrictions
mini-a goal="..." usetools=true capabilityselection=true capabilitylimit=4
mini-a goal="..." policy="(shell: deny, delegation: deny)"
# Automatic planning / advisor / evidence-gate selection
mini-a goal="..." orchestration=auto
# Evaluation suites (YAML/JSON) with reports and baselines
mini-a eval=true evalfile=evals/core.yaml evalout=/tmp/eval.json
mini-a eval=true evalfile=evals/core.yaml evalbaseline=evals/baseline.json
# Long conversations: exact history on disk, bounded working set in context
mini-a conversation=chat.json historyvm=true goal="..."
# Wiki: the agent can call wiki op="retrieve" for a bounded, cited evidence packet;
# V2 is enabled by default; explicitly reindex to publish its serving artifacts
mini-a usewiki=true wikiretrievalv2=true goal="..."
# Safe repeated ingestion: preview scoped removals
ojob mini-a-ingest.yaml ingestsource=./docs wikiroot=./wiki ingestmode=normalize ingestprune=true ingestdryrun=true
See Advanced for details on each, and Virtual Skills for skill libraries.
Agent Files
Load a complete agent profile from a markdown file with YAML frontmatter:
mini-a agent=my-agent.agent.md goal="..."
mini-a --agent # Print a starter template
Supported frontmatter keys: name, description, model, capabilities, tools, constraints, rules, knowledge, youare, mini-a (parameter overrides).
agentfile= is a backward-compatible alias for agent=.
File Inclusion
mini-a useutils=true goal='@file.txt Summarize this file'
mini-a useutils=true goal='@data.csv Analyze it'
Custom Commands, Skills, Hooks
| Item | Path/Command |
|---|---|
| Custom slash template | ~/.openaf-mini-a/commands/<name>.md |
| Skill (folder) | ~/.openaf-mini-a/skills/<name>/SKILL.md |
| Skill (file) | ~/.openaf-mini-a/skills/<name>.md |
| Hooks | ~/.openaf-mini-a/hooks/*.yaml|*.yml|*.json |
| Extra command dirs | extracommands=/path/a,/path/b |
| Extra skill dirs | extraskills=/path/a,/path/b |
| Extra hook dirs | extrahooks=/path/a,/path/b |
| Alternate config base | homedir=/opt/shared/mini-a-config |
| Run one template | mini-a exec="/<name> arg1 arg2" |
| List skills | /skills |
Mode Presets
Combine presets with mode=shell,utils (also accepted by OAF_MINI_A_MODE). Names are case-insensitive; later presets override earlier values, including inherited values, and explicit CLI flags win. If any preset or include cannot be resolved, none of the list is applied.
| Mode | Enables |
|---|---|
shell |
Read-only shell access (useshell=true) |
shellrw |
Shell + write access + non-interactive shell approvals |
utils |
Mini Utils Tool preset (useutils=true mini-a-docs=true usetools=true) |
shellutils |
Shell + Mini Utils Tool (useshell=true useutils=true mini-a-docs=true usetools=true) |
chatbot |
Chat-only mode with streaming (chatbotmode=true usestream=true) |
internet |
Internet-focused MCP/tool mode (time, web, weather, net) with proxying and docs-aware utils |
news |
Inherits internet; time, web, and RSS MCPs |
poweruser |
Shell read-write, utils, skills, streaming, proxying, history retention, advisor strategy, delegation, and standard utils |
webini |
Tools, visual Markdown, attachments, proxying, streaming, History VM, context virtualization, delegation, context guard, and automatic orchestration |
web |
Inherits webini; adds history and web, weather, time, and net MCPs |
webfull |
Inherits web; adds streaming, longer history retention, complexity estimation, and more MCPs (ASCII sketches off) |
Custom modes: create ~/.openaf-mini-a_modes.yaml with a modes: map. Custom definitions are merged with built-ins and override duplicates.
# ~/.openaf-mini-a_modes.yaml
modes:
mypreset:
useshell: true
readwrite: true
maxsteps: 30
mini-a mode=mypreset goal='your goal here'
Dual-Model Setup
export OAF_MODEL="(type: openai, model: gpt-5-mini, key: '...')"
export OAF_LC_MODEL="(type: openai, model: gpt-5-nano, key: '...')"
export OAF_VAL_MODEL="(type: openai, model: gpt-5-mini, key: '...')"
# Saves 50-70% on token costs
# Optional prompt-mode controls (Gemini main auto-enables when unset)
export OAF_MINI_A_NOJSONPROMPT=true
export OAF_MINI_A_LCNOJSONPROMPT=true
Full Debug
Capture everything — agent activity, main-model payloads, and low-cost model payloads — to separate JSON files:
mini-a goal="your goal" \
auditch="(type: file, options: (file: audit.json))" \
debugch="(type: file, options: (file: debug.json))" \
debuglcch="(type: file, options: (file: debuglc.json))"
Add debugvalch when using a validation model (deepresearch=true):
mini-a goal="research task" deepresearch=true \
auditch="(type: file, options: (file: audit.json))" \
debugch="(type: file, options: (file: debug.json))" \
debuglcch="(type: file, options: (file: debuglc.json))" \
debugvalch="(type: file, options: (file: debugval.json))"
Config Home (homedir)
By default Mini-A reads ~/.openaf-mini-a. Override with homedir=:
# Shared team config
mini-a homedir=/opt/shared/mini-a-config goal="..."
# Per-project isolated config
mini-a homedir=./my-project-config goal="..."
# Shared base + extra project skills
mini-a homedir=/opt/shared/mini-a-config extraskills=./project-skills goal="..."
Docker
# Interactive
docker run -it -e OAF_MODEL="(type: openai, model: gpt-5-mini, key: '...')" openaf/mini-a
# Web UI
docker run -p 8080:8080 -e OAF_MODEL="(type: openai, model: gpt-5-mini, key: '...')" openaf/mini-a onport=8080
Common MCP Servers
| Server | Tools | Example |
|---|---|---|
mcp-time |
Current time, timezone conversion | mcp="(cmd: 'ojob mcps/mcp-time.yaml')" |
mcp-db |
SQL queries, schema inspection | mcp="(cmd: 'ojob mcps/mcp-db.yaml')" |
mcp-web |
Web search, fetch pages | mcp="(cmd: 'ojob mcps/mcp-web.yaml')" |
mcp-file |
File operations | mcp="(cmd: 'ojob mcps/mcp-file.yaml')" |
mcp-shell |
Shell command execution | mcp="(cmd: 'ojob mcps/mcp-shell.yaml')" |
mcp-pass |
Republish/merge MCPs as one endpoint | ojob mcps/mcp-pass.yaml onport=9091 mainmcp="(cmd: 'ojob mcps/mcp-web.yaml')" |
Full list of the 29 built-in servers: MCP Catalog.
MCP Server Deployment One-Liners
# Built-in MCP as a standalone Docker HTTP service
docker run -d --rm -e OJOB=mini-a/mcps/mcp-time.yaml -e OPACK_EXEC= \
-p 8888:8888 openaf/mini-a onport=8888
# mcp-pass gateway merging several MCPs behind one endpoint
docker run -d --rm -e OJOB=mini-a/mcps/mcp-pass.yaml -e OPACK_EXEC= \
-p 9091:9091 openaf/mini-a onport=9091 uri=/mcp \
mainmcp="(cmd: 'ojob mini-a/mcps/mcp-web.yaml')" \
othermcps="[(cmd: 'ojob mini-a/mcps/mcp-time.yaml')]"
# Same gateway, returning tool results in TOON instead of JSON
docker run -d --rm -e OJOB=mini-a/mcps/mcp-pass.yaml -e OPACK_EXEC= \
-e OAF_FLAGS="(MCPSERVER: (answerInTOON: true))" \
-p 9091:9091 openaf/mini-a onport=9091 uri=/mcp \
mainmcp="(cmd: 'ojob mini-a/mcps/mcp-web.yaml')"
# Consume any of the above
mini-a mcp="(type: remote, url: 'http://localhost:9091/mcp')" goal='...'
Docker & Kubernetes recipes: Deploying MCP Servers.