Showcase / Scheduled + Desktop MCP

Ambient Oracle — Proactive Intelligence

Instead of answering questions, it tells you things you didn't know to ask.

ambient_oracle.toml

The Problem

Your devices collect an enormous amount of data you never look at. Calendar patterns, message frequency, location habits, weather correlations. You're always reacting — never getting ahead of what your own data could tell you.

What if an agent could mine this data continuously and tell you things before they become problems?

The Config

ambient_oracle.toml is the most complex config in the gallery. It combines local LLM inference, iMCP device data, knowledge lifecycle, and dual scheduling — all in one agent.

Agent: local LLM + device data + knowledge

[agent]
db = "/tmp/ambient_oracle.db"   # Persistent knowledge store
provider = "llama_cpp"
model = "unsloth/Qwen3-VL-8B-Instruct-GGUF:UD-Q6_K_XL"
assume_mutating = false
mutating_tools = []

tools = [
  "create_task", "todowrite", "todoread",
  "question", "mdq",

  # Knowledge lifecycle — learn and remember
  "knowledge_ingest",
  "knowledge_query",
  "knowledge_consolidate",
  "knowledge_list_unconsolidated",
  "knowledge_stats",

  # All Apple data tools from iMCP
  "iMCP.*",
]
Knowledge on the same agent

Most systems separate the "knowledge ingestion" pipeline from the "user interaction" agent. This config puts both on the same agent. The oracle reads your data, learns patterns, and briefs you — all in one loop.

GPU parameters with massive context

[agent.parameters]
n_ctx = 160000        # 160K context — essential for knowledge-heavy agents
max_tokens = 8192
top_p = 0.95
top_k = 20
temperature = 0.7        # Lower temp for factual pattern mining
flash_attention = "enabled"

Middleware: higher limits for mining cycles

[[middleware]]
type = "limits"
max_steps = 60    # More steps than standup bot — mining is deeper
max_turns = 25

[[middleware]]
type = "context"
warn_at_percent = 80
compact_at_percent = 90
fallback_max_tokens = 128000

iMCP: on-device data access

[[mcp]]
name = "iMCP"
transport = "stdio"
command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"

Dual-Schedule Design

The oracle uses two schedules that work together: one for gathering data and producing briefings, another for consolidating accumulated knowledge into higher-level patterns.

Schedule 1: Interval briefing (every 2 hours)

# Created via dashboard UI:
Trigger: Interval, 7200 seconds (2 hours)
Prompt: "Run ambient briefing cycle: gather iMCP signals,
        ingest observations, query patterns, and produce
        proactive briefing."

Schedule 2: Event-driven consolidation

# Triggered automatically after 12 knowledge ingestions:
event_kinds: ["knowledge_ingested"]
threshold: 12
debounce_seconds: 60
Prompt: "Run ambient consolidation cycle: list unconsolidated
        entries in scope global:ambient and consolidate
        recurring patterns."
Event-driven scheduling

Instead of running on a fixed timer, the consolidation schedule fires when enough new observations have been ingested. This is more efficient than interval-based consolidation — it runs when there's actually something new to synthesize.

What Happens Over Time

Day 1
Agent reads your calendar, messages, and location. Ingests observations: "User had 4 meetings today, mostly in the morning. Commute was 35 minutes. Last message sent at 22:14."
Day 3
After 12 ingestions, consolidation fires. Agent synthesizes: "User tends to cancel evening plans on days with back-to-back morning meetings. Pattern confidence: 2/2 occurrences."
Day 7
Agent proactively briefs you at 8am: "You have 6 meetings tomorrow, all before 2pm. Your data shows this pattern correlates with low energy and cancelled evening plans. Consider blocking 30 minutes of recovery time after meeting #4."
Day 14+
Patterns become more refined. The agent tracks correlations across weather, calendar density, message sentiment, and commute times. Briefings get sharper.

Key Features

  • Interval + event-driven scheduling — two schedules working in tandem
  • Knowledge consolidation — merges observations into higher-level patterns
  • Cross-session learning — persists across restarts via SQLite knowledge store
  • Device data mining — Calendar, Contacts, Messages, Maps, Weather via iMCP
  • Local LLM inference — your behavioral data never leaves your machine
  • Debounced event triggers — consolidation runs only when there's enough new data

Try It Yourself

# 1. Install iMCP and enable services
brew install --cask mattt/tap/iMCP

# 2. Run the agent
cargo run --example qmtcode --features dashboard -- \
  confs/ambient_oracle.toml --dashboard

# 3. Create two schedules in the dashboard:
#   Schedule 1: Interval, 7200s, "Run ambient briefing cycle..."
#   Schedule 2: Event-driven, knowledge_ingested, threshold 12,
#              "Run ambient consolidation cycle..."