Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ EMBEDDING_PROVIDER=local

# Observability via Braintrust
# BRAINTRUST_API_KEY=your_braintrust_key_here

# Fast code editing/search via Morph
# MORPH_API_KEY=your_morph_key_here
8 changes: 6 additions & 2 deletions opc/scripts/setup/wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,19 +407,21 @@ async def prompt_api_keys() -> dict[str, str]:
"""Prompt user for optional API keys.

Returns:
dict with keys: perplexity, nia, braintrust
dict with keys: perplexity, nia, braintrust, morph
"""
console.print("\n[bold]API Keys (optional)[/bold]")
console.print("Press Enter to skip any key you don't have.\n")

perplexity = Prompt.ask("Perplexity API key (web search)", default="")
nia = Prompt.ask("Nia API key (documentation search)", default="")
braintrust = Prompt.ask("Braintrust API key (observability)", default="")
morph = Prompt.ask("Morph API key (fast code editing/search)", default="")

return {
"perplexity": perplexity,
"nia": nia,
"braintrust": braintrust,
"morph": morph,
}


Expand Down Expand Up @@ -500,6 +502,8 @@ def generate_env_file(config: dict[str, Any], env_path: Path) -> None:
lines.append(f"NIA_API_KEY={api_keys['nia']}")
if api_keys.get("braintrust"):
lines.append(f"BRAINTRUST_API_KEY={api_keys['braintrust']}")
if api_keys.get("morph"):
lines.append(f"MORPH_API_KEY={api_keys['morph']}")
lines.append("")

# Write file
Expand Down Expand Up @@ -635,7 +639,7 @@ async def run_setup_wizard() -> None:
if Confirm.ask("Configure API keys?", default=False):
api_keys = await prompt_api_keys()
else:
api_keys = {"perplexity": "", "nia": "", "braintrust": ""}
api_keys = {"perplexity": "", "nia": "", "braintrust": "", "morph": ""}

# Step 5: Generate .env
console.print("\n[bold]Step 5/13: Generating configuration...[/bold]")
Expand Down