Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
76d93ba
Add company constitution
pietrozucconi Sep 10, 2026
24172f5
Add organization structure
pietrozucconi Sep 10, 2026
309cbd4
Add governance structure
pietrozucconi Sep 10, 2026
2c9e2ad
Add memory policy for Startup Brain
pietrozucconi Sep 10, 2026
b578267
Replace FounderOS demo organization with investment company roster
pietrozucconi Sep 10, 2026
8a343ef
Register investment company agent runtimes
pietrozucconi Sep 10, 2026
d9db9f0
Update organization tests for investment company
pietrozucconi Sep 10, 2026
756e47a
Rebuild organization page for investment company
pietrozucconi Sep 10, 2026
cbd8db2
Fix seed tests for investment company structure
pietrozucconi Sep 10, 2026
cf578f4
Update tests for investment company architecture
pietrozucconi Sep 10, 2026
8b2caf9
Sanitize main application shell
pietrozucconi Sep 11, 2026
95a3c24
Update nav.ts
pietrozucconi Sep 11, 2026
1124e04
Update Sidebar.tsx
pietrozucconi Sep 11, 2026
ef7793f
Update page.tsx
pietrozucconi Sep 11, 2026
d4034c1
Update page.tsx
pietrozucconi Sep 11, 2026
62ac3a1
Update page.tsx
pietrozucconi Sep 11, 2026
ddbddfa
Update page.tsx
pietrozucconi Sep 11, 2026
2e96b79
Reset tasks to clean company state
pietrozucconi Sep 11, 2026
ab8efa5
Reset skills to clean company state
pietrozucconi Sep 11, 2026
4d0c37e
Reset workflows to clean company state
pietrozucconi Sep 11, 2026
8d4666f
Build clean complete company agents registry
pietrozucconi Sep 11, 2026
de2efb6
Update seed.ts
pietrozucconi Sep 11, 2026
9928c2e
Add one-time clean company database reset
pietrozucconi Sep 11, 2026
a397d7c
Make database initialization company-native
pietrozucconi Sep 11, 2026
01c2c6c
Remove legacy social module and tests
pietrozucconi Sep 15, 2026
65cf478
Remove legacy content and lead magnet modules
pietrozucconi Sep 15, 2026
a9a9bc0
Remove legacy funnel application layer
pietrozucconi Sep 15, 2026
62caa44
Remove legacy Conductor system
pietrozucconi Sep 15, 2026
402cbbb
Delete all personas
pietrozucconi Sep 15, 2026
19e4cf1
Reset Brain
pietrozucconi Sep 15, 2026
501f935
Remove legacy G-Brain and knowledge graph UI
pietrozucconi Sep 17, 2026
aed744a
Remove legacy knowledge graph internals
pietrozucconi Sep 17, 2026
6a66334
Remove legacy life map and ventures
pietrozucconi Sep 17, 2026
dcb111b
Remove legacy comms application layer
pietrozucconi Sep 17, 2026
3fb836c
Remove legacy personas contacts and funnel data model
pietrozucconi Sep 17, 2026
2cba4b8
Remove legacy social growth and marketing systems
pietrozucconi Sep 17, 2026
902e41d
Remove legacy people lead magnets and SOP system
pietrozucconi Sep 18, 2026
9e330ba
Remove legacy FounderOS data models and UI
pietrozucconi Sep 18, 2026
2e2e823
Remove legacy brain and life map schemas
pietrozucconi Sep 18, 2026
dbbf612
Clean legacy FounderOS runtime and finances
pietrozucconi Sep 18, 2026
9720cb4
Complete FounderOS legacy cleanup
pietrozucconi Sep 21, 2026
b5a6293
Add Startup Brain cognitive kernel
pietrozucconi Sep 21, 2026
e0f6a5d
Add governed Startup Brain gateway
pietrozucconi Sep 21, 2026
d6cd770
Add deterministic company control plane
pietrozucconi Sep 21, 2026
3ebb51a
Add durable control plane persistence foundation
pietrozucconi Sep 21, 2026
920beab
Add atomic control plane unit of work
pietrozucconi Sep 21, 2026
4c9b2a5
Add reliable control plane consumers
pietrozucconi Sep 21, 2026
c85a766
Add governed control plane handoff routing
pietrozucconi Sep 21, 2026
4779b24
Add control plane operator surfaces
pietrozucconi Sep 22, 2026
ea9c82f
"Add control plane operator surfaces"
pietrozucconi Sep 22, 2026
405b237
Add governed CEO decisions and agent executor contract
pietrozucconi Sep 22, 2026
4828aaf
Add governed agent runtime boundary
pietrozucconi Sep 22, 2026
331796f
Add request integrity hardening
pietrozucconi Sep 22, 2026
2f8adb2
Add trusted runtime identity and credential isolation
pietrozucconi Sep 22, 2026
d0910c8
Add runtime supervision and durable brain proposals
pietrozucconi Sep 22, 2026
13e330a
Add first real model and research provider adapters
pietrozucconi Sep 22, 2026
2270442
Harden first live AI employee sandbox
pietrozucconi Sep 22, 2026
03e3ffc
Complete V2K.1 OmniRoute agent runtime integration
pietrozucconi Sep 23, 2026
1408cf9
Update Brain runtime context retrieval
pietrozucconi Sep 23, 2026
286d14a
We arrived at checkpoint before starting to define the brain
pietrozucconi Sep 25, 2026
22355c7
We arrived at checkpoint before definition and finalization of brain
pietrozucconi Sep 25, 2026
ef7199c
2
pietrozucconi Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
104 changes: 12 additions & 92 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,92 +1,12 @@
# FOUNDER OS — copy to .env.local and fill in. .env.local is gitignored.

# ── Email (up to 4 IMAP inboxes) ─────────────────────────────────────────
# Gmail: use an App Password (Google Account → Security → 2FA → App passwords)
INBOX_1_HOST=imap.gmail.com
INBOX_1_USER=
INBOX_1_PASS=
INBOX_1_NAME=
# INBOX_1_PORT=993 # optional, defaults to 993
INBOX_2_HOST=
INBOX_2_USER=
INBOX_2_PASS=
INBOX_3_HOST=
INBOX_3_USER=
INBOX_3_PASS=
INBOX_4_HOST=
INBOX_4_USER=
INBOX_4_PASS=

# ── Slack ────────────────────────────────────────────────────────────────
# Bot token (xoxb-…) with scopes: channels:read, channels:history, users:read
SLACK_BOT_TOKEN=

# ── Payment processors ───────────────────────────────────────────────────
STRIPE_SECRET_KEY= # full client implemented (balance + charges)
PAYPAL_CLIENT_ID= # registered; client lands when keys do
PAYPAL_CLIENT_SECRET=
SQUARE_ACCESS_TOKEN=
WHOP_API_KEY=

# ── Notion ───────────────────────────────────────────────────────────────
# Internal integration secret; share target pages with the integration
NOTION_API_KEY=

# ── Launchpad Cohort ───────────────────────────────────────────────────
WEBINARJAM_API_KEY= # account-wide key; pulls webinar registrants/attendees
TRAKYO_API_KEY= # revenue attribution; status-only until Trakyo ships an API
GHL_API_KEY= # GoHighLevel Private Integration token (Settings → Private Integrations, read scopes)
GHL_LOCATION_ID= # the LC sub-account location id (visible in the GHL URL: /v2/location/<id>/…)

# ── G-Brain ──────────────────────────────────────────────────────────────
# Defaults work: gbrain CLI on PATH, store at knowledge/brain-store
# BRAIN_PROVIDER=gbrain # set to "stub" to disable
# GBRAIN_BIN= # override CLI path
# GBRAIN_STORE= # override brain-store path
# GBRAIN_DISABLE_DIRECT_POOL=1

# ── LLM (agent & Conductor chat via Vercel AI Gateway) ───────────────────
# Without a key, agent chat reports "not configured" (no fake "connected").
AI_GATEWAY_API_KEY= # Vercel AI Gateway key; enables agent chat
# LLM_PROVIDER=gateway # set to "stub" for deterministic offline tests
# LLM_MODEL=anthropic/claude-sonnet-4-6 # "provider/model" routed via gateway

# ── Beehiiv (email list) ─────────────────────────────────────────────────
# Without both, the Social email-list card stays seeded dummy (no fake number).
BEEHIIV_API_KEY= # Beehiiv API key
BEEHIIV_PUBLICATION_ID= # publication id (pub_...)

# ── ManyChat (Instagram DM automation) ───────────────────────────────────
# Lights up the ManyChat connector on /integrations. ManyChat → Settings → API.
# The API cannot list DMs — the live /social DM inbox is fed by the webhook
# below, not by this key.
MANYCHAT_API_KEY= # ManyChat API key
# Optional shared secret: if set, /api/webhooks/manychat requires header
# `x-manychat-secret` to match (put the same value in the ManyChat External
# Request headers). Leave blank to accept unauthenticated posts (dev only).
MANYCHAT_WEBHOOK_SECRET=

# ── Payments processors (Finances) ───────────────────────────────────────
# Stripe is fully wired; the rest are honest "not configured" until keyed.
# STRIPE_SECRET_KEY= # sk_live_… / sk_test_… (already above if set)
PAYPAL_CLIENT_ID=
PAYPAL_CLIENT_SECRET=
FANBASIS_VANTAGE_KEY= # FanBasis · Vantage
FANBASIS_LC_KEY= # FanBasis · Launchpad Cohort
WISE_1_TOKEN= # Wise account 1 (income + outgoing transfers)
WISE_2_TOKEN= # Wise account 2

# ── Email send (SMTP, optional per inbox) ────────────────────────────────
# Comms email replies send for real via SMTP using each inbox's user/pass.
# Defaults: host = INBOX_n_HOST with imap.→smtp., port 465. Override per slot:
# INBOX_1_SMTP_HOST=smtp.gmail.com
# INBOX_1_SMTP_PORT=465

# ── Comms lane routing (optional) ────────────────────────────────────────
# Extra keywords that force a message into the /comms Work lane, comma-separated,
# matched against its inbox / sender / subject. Add your brands + key clients.
# Generic work signals (invoice, contract, proposal, …) are built in.
# COMMS_WORK_KEYWORDS=Acme,Northwind,Jane Client

# ── App ──────────────────────────────────────────────────────────────────
# FOUNDER_OS_DB= # override SQLite path
# Real provider integration (V2J.1)
# Copy only the variable NAMES you need into .env.local.
# NEVER commit real values.

ANTHROPIC_API_KEY=
ANTHROPIC_MODEL=claude-sonnet-5
TAVILY_API_KEY=
ALPHA_VANTAGE_API_KEY=

# Existing optional runtime paths/secrets can remain in your local environment.
# STARTUP_CONTROL_PLANE_DB=
# STARTUP_RUNTIME_IDENTITY_SECRET=
27 changes: 27 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Startup: Start Local Stack",
"type": "shell",
"command": "powershell",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}\\scripts\\start-local-stack.ps1"
],
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "dedicated",
"clear": true
}
}
]
}
77 changes: 41 additions & 36 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,45 @@
# FOUNDER OS — agent rules
# STARTUP — Agent Rules

Full project docs live in **CLAUDE.md** (same directory) — read it first.
This file exists so non-Claude agents (Codex, etc.) get the same house rules.
Read `CLAUDE.md` and the canonical company specification before changing the system.

Authoritative company files:

- `company/company.yaml`
- `company/organization.yaml`
- `company/governance.yaml`
- `policies/memory_policy.yaml`

## Non-negotiables

- **Never commit or copy secrets.** Credentials live in `.env.local`
(gitignored) and Alex's canonical files; `lib/creds.ts` resolves them.
Never copy keys from `~/knowledge/.env.agents` into the repo.
- **Never push to any remote or touch `main` without Alex's explicit yes.**
Commit locally on `founder-os`, small checkpoints, often.
- **Don't kill the dev server on 4100 or 4101** — other sessions use them.
If your edit crashes the dev server's hot reload, fix it fast: a crash loop
corrupts `.next` and breaks every session's page chunks (kill the port,
`rm -rf .next`, restart).
- `/org` markup is frozen — do not restructure it.
- No em/en dashes in anything written for Alex.

## How to work

- TDD: failing test first (`tests/`, one file per module,
`FOUNDER_OS_DB=:memory:`), then implement. `npm test` and
`npm run typecheck` must be green before claiming done.
- Everything reads through the repo layer: `lib/db.ts` repos + `lib/schemas.ts`
Zod validation + `lib/seed.ts` seeds. Never query SQLite from a page/route.
- Theme via CSS vars on `data-theme` (five themes in `app/globals.css`);
Tailwind `os.*` tokens map to them. Keep `tailwind.config.ts` and
`globals.css` in sync.
- Commands: `npm run dev` (port 4100) · `npm test` · `npm run typecheck` ·
`npm run seed` · `npm run brain:docs`.

## Multi-agent etiquette

Multiple agent sessions (Claude, Codex) work this repo concurrently:
- `git log --oneline` to see where others are; commit small and often.
- Coordinate by surface: don't edit a page/component another session has
uncommitted changes in (`git status` shows them).
- The Playwright browser is shared across sessions — expect interference.
- Leave handoff notes in `docs/` if you stop mid-feature.
- Never commit secrets.
- Never push to any remote without explicit human approval.
- Never invent operational company history or production data.
- Never give an AI agent unrestricted brokerage execution credentials.
- Never bypass governance or approval state transitions.
- Do not restore removed FounderOS functionality merely to satisfy an old test.

## Engineering rules

- Run `npm run typecheck`.
- Run `npm test`.
- Keep structured data validated with Zod.
- Use repository abstractions for operational persistence.
- Preserve useful generic infrastructure.
- Remove application-specific FounderOS assumptions.
- Treat empty Foundation Mode datasets as valid.

## Architecture principle

Agents propose actions.

The deterministic Company Control Plane decides whether those actions are technically permitted.

The human CEO retains final investment and execution authority.

## Startup Brain

Startup Brain is the company's institutional memory.

Do not recreate or depend on the legacy FounderOS G-Brain.

Raw market history belongs in market-data systems, not institutional memory.
Loading