Profile — .omao/profile.yaml
One per project, created by oma setup. All hooks, skills, and validation tools treat this file as single source of truth.
Format (v1)
version: 1
created_at: "2026-04-30T02:00:00Z"
harness:
primary: claude-code # claude-code | kiro
secondary: null # or "kiro" / "claude-code"
aws:
account_id: "123456789012"
region: ap-northeast-2
profile_name: default
environment: sandbox # sandbox | staging | prod
aidlc:
entry_phase: inception # inception | construction | operations
strict_gates: false
approval:
mode: interactive # interactive | ci-auto-approve-safe | strict
blast_radius_ceiling: single-account
budgets:
default_monthly_usd: 200
warn_at_pct: 80
block_at_pct: 100
observability:
mode: langfuse-managed # langfuse-managed | langfuse-self-hosted | opentelemetry-only | none
endpoint: null
star_confirmed: false
Validation
- Schema:
schemas/profile/profile.schema.json oma setupalways callsprofile_validateimmediately after write — installation does not complete with an invalid profile.oma doctor'sprofile-validprobe re-validates per session.
Field effects
harness.primary/secondary— Determines which install scripts to run.aws.*— Seed budget'sscope_ref, MCP server's region context.aidlc.entry_phase— Phase where first/oma:autopilotenters.approval.mode—ci-auto-approve-safeauto-approves within single-namespace blast radius. Otherwise human-in-the-loop.approval.blast_radius_ceiling— If exceeded, enforce human approval + secondary review.budgets.*— Seed.omao/ontology/budgets/default.json, and simultaneously set budget warning threshold foruser-prompt-submit.sh.observability.*— If Langfuse self-hosted,langfuse-observabilityskill reusesendpointfield.
Manual editing
- Editable without re-running
oma setup. However, re-validate withoma doctorafter editing. - Empty values (
null) may use safe defaults or error depending on field. See schema'srequired/defaultclauses.
Rationale for defaults
- Monthly budget $200 — Observed median cost for single developer using Claude Code + Claude Sonnet full-day. Scale up for teams.
blast_radius_ceiling: single-account— By default, cross-account or cross-region deployments route through human approval to control blast radius.approval.mode: interactive— Safest for initial adoption. Recommend promotion toci-auto-approve-safeonly in CI.