AI Board of Directors - Your synthetic advisory board for solo builders.
A multi-agent CLI tool that evaluates your ideas, decisions, and direction through 7 specialist lenses, then delivers a structured verdict with actionable next steps.
The orchestrator (Keystone) coordinates 7 specialist agents in parallel, aggregates their verdicts, applies consensus rules, and produces a structured final output.
| Codename | Role | Lens |
|---|---|---|
| Lynx | Product Operator | User pain, UX, adoption, retention |
| Wildfire | Growth & Distribution | Acquisition loops, channels, spread |
| Bedrock | Systems & Architecture | Simplicity, stability, cost |
| Leverage | Capital Allocator | ROI of time, compounding decisions |
| Sentinel | Risk & Reality Check | Blind spots, over-optimism |
| Prism | Creative Director | Positioning, narrative, differentiation |
| Razor | Product Purist | Focus, simplicity, ruthless cuts |
# Clone the repo
git clone https://github.com/your-org/keystone-agent.git
cd keystone-agent
# Install with uv
uv sync
# Copy and configure environment
cp .env.example .env
# Edit .env with your OpenAI API keyThe agent stores sessions in DynamoDB. Create the table before running:
# For local development (DynamoDB Local or LocalStack)
docker run -d -p 8000:8000 amazon/dynamodb-local
uv run python scripts/create_dynamodb_tables.py --local
# For AWS (uses your configured credentials)
uv run python scripts/create_dynamodb_tables.py --region us-east-2
# With custom prefix
uv run python scripts/create_dynamodb_tables.py --prefix myapp_# Review an idea
uv run board review "I'm building an AI-powered code review tool for small teams"
# Compare two options
uv run board decide --a "Build mobile first" --b "Build web first" --context "Weekend builder, limited time"
# Audit recent work
uv run board audit "Spent last 2 weeks on redesign" --since 14 --project my-saas
# Get creative directions
uv run board creative "How should I position my AI writing tool?"
# View project history
uv run board history --project my-saas
# Rate a past decision
uv run board rate <session-id> --rating correct --notes "Followed advice, got 50 users"Validate an idea and find the smallest viable wedge.
uv run board review "Your idea or question"
uv run board review "Your idea" --project my-project --stage mvp
cat idea.txt | uv run board review # Pipe from fileCompare two options and get a clear winner.
uv run board decide --a "Option A" --b "Option B" --context "Decision context"Detect drift and stop low-leverage work.
uv run board audit "What I've been working on" --since 14Generate divergent positioning directions.
uv run board creative "How should I position my product?"Every board decision includes:
- Final Verdict: GO / NO_GO / PIVOT / UNCLEAR
- Why This Verdict: Top 3 reasons
- Top Risks: What could go wrong
- Key Tradeoffs: What you're trading off
- Next 3 Actions: Concrete next steps
- One Week Plan: Day-by-day breakdown
- Experiment: Hypothesis + test + success metric
- Board Votes: How each specialist voted
- Confidence: 0-100% confidence level
Environment variables (or .env file):
# Required
KEYSTONE_OPENAI_API_KEY=sk-your-key
# Optional
KEYSTONE_ORCHESTRATOR_MODEL=gpt-5-mini # Model for orchestrator
KEYSTONE_SPECIALIST_MODEL=gpt-5-nano # Model for specialists
KEYSTONE_AWS_REGION=us-east-2 # AWS region
KEYSTONE_DYNAMODB_TABLE_PREFIX=keystone_ # Table name prefix
KEYSTONE_DYNAMODB_ENDPOINT_URL= # Local DynamoDB endpoint (dev only)
KEYSTONE_MAX_RETRIES=1 # Retries per specialist
KEYSTONE_HISTORY_LIMIT=5 # Past decisions for contextSingle-table DynamoDB design backing the OpenAI Agents SDK session management.
Table: {prefix}sessions
- PK:
session_id(UUID) - GSI:
project_id-created_at-indexfor history queries
Attributes:
items- SDK conversation historymode,request_text,option_a,option_b- Request metadatafinal_output- Board result (nested JSON)rating,rating_notes,rated_at- User feedback
The orchestrator applies these rules when synthesizing the final verdict:
- No-Go Threshold: If 2+ specialists vote NO_GO, final cannot be GO
- Razor Veto: If Razor (Product Purist) says CUT/REFRAME, final cannot be GO unless Lynx AND Wildfire both vote GO with 75%+ confidence
- Bedrock Pivot: If Bedrock (Architecture) votes PIVOT, confidence is downgraded unless they provide an MVP path
- Creative Feasibility: In creative mode, Prism's proposals must be validated by Lynx and Wildfire
# Install with dev dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=keystone_agent
# Type check
uv run mypy src/keystone_agent
# Lint
uv run ruff check src/keystone_agentkeystone-agent/
├── src/keystone_agent/
│ ├── agents/ # Specialist & orchestrator agents
│ ├── core/ # Runner using OpenAI Agents SDK
│ ├── prompts/ # Agent prompt files (*.md)
│ ├── schemas/ # Pydantic models for structured output
│ ├── storage/ # DynamoDB session backend (SessionABC)
│ ├── utils/ # Formatters, background tasks
│ └── cli.py # Typer CLI
├── scripts/
│ └── create_dynamodb_tables.py # Table setup script
├── tests/
├── docs/
│ └── PHILOSOPHY.md # Your company philosophy
├── LICENSE
└── pyproject.toml
Edit docs/PHILOSOPHY.md with your own principles. This gets injected into every agent prompt.
- Create a new prompt in
src/keystone_agent/prompts/ - Add config to
agents/specialists.py - Update the orchestrator prompt