Padhanam (Malayalam for "learning") is a personal learning sprint by the operator to develop fluency in building agentic systems under enterprise-realistic constraints. The repository documents the architectural decisions, builds, and reflections. The platform shape is agentic workflow with an observability and optimization layer; the deliverable is the operator's fluency, not a sellable product.
The charter under charter/ holds design intent. Read in this order:
- bet.md — strategic intent and what success looks like
- principles.md — engineering rules, read every session
- decisions.md — append-only architectural decisions log
- packages.md — Phase 1 work breakdown, then current-package.md for active scope
History lives separately under log/ (sessions, packages, audits) and old material is moved to docs/archive/ at audit boundaries — never deleted.
Strategic work — bets, audits, package planning, decisions framed against Kano — happens in Claude.ai, where breadth of context and reasoning matter more than tool access. Build and test work — implementation, schema migrations, tests, commits — happens in Claude Code against this repo. The two surfaces meet through the local files: decisions written in Claude.ai land in decisions.md, and Claude Code reads them as constraints. Audit findings flow back the same way.
Start with charter/bet.md, then charter/principles.md. CLAUDE.md describes how Claude Code is expected to operate inside the repo.
mkcert is a host dependency: install with brew install mkcert nss and run mkcert -install once to add the local CA to the system trust store. Generate localhost.pem and localhost-key.pem into ./certs/ with mkcert -cert-file certs/localhost.pem -key-file certs/localhost-key.pem localhost langfuse.localhost; the directory is gitignored because the certs are host-machine-specific. The cert covers both names because UI services live on subdomains (Langfuse on langfuse.localhost); add new SANs as further UI services land. make up starts the Caddy proxy alongside the rest of the stack. Verify with curl https://localhost/health (returns ok) and curl https://langfuse.localhost/api/public/health (returns Langfuse JSON), both with valid TLS handshakes (no -k needed). *.localhost resolves to 127.0.0.1 on macOS without /etc/hosts changes.