Skip to main content

OpenHome Ability Templates

Five templates. Four ability categories. Unlimited possibilities.
OpenHome ability templates are starter blueprints. They are intentionally minimal and focused on runtime architecture, not polished UX.

What OpenHome Actually Is

OpenHome runs AI agents that can trigger Python abilities. Those abilities can:
  • control local tools through bridge methods
  • call APIs and external services
  • process ambient audio in loops
  • store and share state over time
  • run continuously as background daemons
LLMs are central in this model. They route, transform, and summarize, while abilities execute concrete actions.

Ability Categories

Notes:
  • Agent Controlled templates are still being finalized.

Background Daemon Entry Contract

For daemon templates, background.py must be named exactly background.py.

How To Use Templates In Dashboard

  1. Click Create on https://app.openhome.com/dashboard/home.
  2. Select Agent Ability.
  3. Fill the Create Ability form and choose any category for your ability.
  4. Fill Ability Behavior, then choose the template you want.
  5. Click Save Ability.

Create Ability Page

Template Selection

Template Directory

Template README Sources

Start Here Templates

basic-template (Skill, minimal)

Purpose: absolute minimum lifecycle implementation.

api-template (Skill, external API)

Purpose: ask user input, call API, summarize result, exit cleanly.

loop-template (Skill, long-running loop)

Purpose: interactive multi-turn skill with explicit exit words.

The Five Core Templates

1. SendEmail (Skill · Fire-and-forget)

What it demonstrates:
  • one trigger, one action, one status response
  • synchronous SDK call in async flow
  • required handoff to resume_normal_flow()
Production upgrades:
  • collect recipient/body from user, do not hardcode
  • add confirmation step before send
  • secure credential handling

2. OpenHome-local (Skill · LLM-as-translator)

What it demonstrates:
  • user speech to terminal command generation
  • local execution bridge with exec_local_command()
  • second LLM pass to explain execution result
Production upgrades:
  • command allowlist / denylist
  • confirmation before high-risk commands
  • timeout and error boundaries

3. openclaw-template (Skill · Sandbox escape)

What it demonstrates:
  • pass-through request routing to OpenClaw
  • no terminal generation layer, direct local AI routing
Production upgrades:
  • robust response validation
  • fallback for unmatched tools
  • timeout + retry strategy

4. Background + Alarm (Background daemon pattern)

What it demonstrates:
  • continuous background loop with session_tasks.sleep()
  • reading session history / file state periodically
  • skill + daemon coordination through shared storage
Background loop pattern:
Alarm background fire pattern:
Critical daemon rules:
  • use session_tasks.sleep(), not asyncio.sleep()
  • do not call resume_normal_flow() in daemon loops
  • interrupt before daemon speech/audio when needed
  • persist JSON safely (see ReadWriteFile rules)
  • background file name must be exactly background.py

5. loop-template a.k.a. Log-My-Life pattern (Skill · Ambient observer)

What it demonstrates:
  • long-running session loop
  • periodic capture/process/respond
  • explicit phrase-based exit
Core ambient loop shape:
Important audio detail:
  • get_audio_recording() may return cumulative recording data.
  • If chunking externally, track prior byte offset and slice new data before transcription/analysis.

Utility Pattern: ReadWriteFile

Purpose: safe shared-state and IPC pattern across Skill and Daemon.
For JSON files:
  • always use delete-then-write when replacing full file content
  • append mode is still good for .txt and .log activity streams

Utility Pattern: .md Context Injection

Purpose: feed ambient context into the Agent prompt through persistent markdown files.
Rules:
  • only persistent .md files are injected into Agent context
  • reserve user_profile.md and user_summary.md for platform memory background ownership
  • keep each injected .md file short and current-state focused
  • expect ~60-90 seconds before a newly written .md file is reflected in responses
See: Agent Memory & Context Injection

Utility Pattern: Key-Value Context Storage

Purpose: structured state for preferences, conversation workflows, feature flags, and cache metadata. Notes:
  • Key-value methods are synchronous (do not await).
  • Store JSON dictionaries (dict) as values.
Related methods:
  • create_key(key, value)
  • update_key(key, value)
  • delete_key(key)
  • get_all_keys()
  • get_single_key(key)
  • missing-key-safe pattern: read with get_single_key() before update_key(), create when absent

How Templates Map To Ability Types

Critical Technical Rules

What You Can Build From These

  • voice-composed email flows
  • local machine operator abilities
  • OpenClaw orchestration flows
  • background profilers, summarizers, and schedulers
  • ambient capture and extraction assistants
These templates are the foundation layer. Start with the closest pattern, keep lifecycle rules strict, and then harden for production.