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 @@ -45,3 +45,6 @@ EMBEDDING_PROVIDER=local

# Fast code editing/search via Morph
# MORPH_API_KEY=your_morph_key_here

# Web scraping via Firecrawl
# FIRECRAWL_API_KEY=your_firecrawl_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,7 +407,7 @@ async def prompt_api_keys() -> dict[str, str]:
"""Prompt user for optional API keys.

Returns:
dict with keys: perplexity, nia, braintrust, morph
dict with keys: perplexity, nia, braintrust, morph, firecrawl
"""
console.print("\n[bold]API Keys (optional)[/bold]")
console.print("Press Enter to skip any key you don't have.\n")
Expand All @@ -416,12 +416,14 @@ async def prompt_api_keys() -> dict[str, str]:
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="")
firecrawl = Prompt.ask("Firecrawl API key (web scraping)", default="")

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


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

# Write file
Expand Down Expand Up @@ -639,7 +643,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": "", "morph": ""}
api_keys = {"perplexity": "", "nia": "", "braintrust": "", "morph": "", "firecrawl": ""}

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