-
Notifications
You must be signed in to change notification settings - Fork 2
Home
A TypeDB-powered agentic knowledge notebook for developers — run interactively with Claude Code or deployed persistently via OpenClaw
"The duty of the man who investigates the writings of scientists, if learning the truth is his goal, is to make himself an enemy of all that he reads, and, applying his mind to the core and margins of its content, attack it from every side."
— Ibn al-Haytham (Alhazen), 965-1039 AD
Alhazen is an agentic curation system with Notebook memory.
The system uses a TypeDB knowledge graph, runs Python scripts, and builds structured understanding from unstructured sources — job postings, disease databases, scientific literature. You never write queries against the database or call APIs directly. Claude handles all of it.
Within modern production-level coding agents (Claude, Goose, OpenClaw, etc.) 'skills' are a lightweight way of providing capabilities to an agent by specifying how the agent should attempt certain tasks, maybe even providing some scripts that the agent could call. Here, we lean into this approach as a design choice. Alhazen is intended to mainly use skills to accomplish its goals.
We provide a repository of example skills to use: alhazen-skill-examples
The system has three layers:
- Agent — the agentic interface (either Claude or OpenClaw).
- TypeDB — the knowledge graph backend, acting as the ontological memory.
- Skills — domain-specific modules combining a TypeDB schema namespace, Python scripts, a SKILL.md file to help decide which skills should be used for a given task, a USAGE.md instruction file to describe how to perform the task itself. Finally, a dashboard component that displays the relevant data being captured.
Open a Claude Code session in the project directory. Claude reads the skill files, calls Python scripts, and stores results in TypeDB. Best for exploration, sensemaking, and building new skills.
cd skillful-alhazen
make db-start # start TypeDB
claude # open Claude CodeBy running Alhazen on a dedicated MacMini system, you install the Claude version in your local environment, but run OpenClaw in a separate user account with no access to your personal workspace — This setup provides access to OpenClaw (access via messaging + cron + heartbeat functions) in a development environment with some security hardening.
Deploy a full Alhazen instance to a dedicated remote server for maximum security. This is Alhazen as a persistent service — cron-scheduled foraging, Telegram notifications, always-on knowledge accumulation. No laptop required.
See Deployment for the progression from local dev to OpenClaw on Mac Mini to OpenClaw on a VPS.
These two skills are presented as examples for demonstration purposes:
| Skill | Description | OpenClaw Use |
|---|---|---|
| Skills: Jobhunt | Track job applications — automated forager, fit analysis, skill gap identification | Nightly forager cron, Telegram triage notifications |
| Skills: Rare Disease | Build 360° disease knowledge graphs from MONDO IDs — phenome, genome, therapeutome | Batch ingestion from disease lists |
TypeDB is not just a document store — it's the ontological foundation of Alhazen. The schema defines the concepts Claude reasons with:
identifiable-entity (abstract root)
├── domain-thing # Real-world objects: diseases, genes, companies, jobs
├── collection # Typed sets: investigations, search campaigns, corpora
└── information-content-entity (abstract)
├── artifact # Raw captured content (API responses, HTML, PDFs)
├── fragment # Extracted pieces (requirements, phenotype associations)
└── note # Claude's analysis (fit scores, mechanism notes, syntheses)
This hierarchy guides skill design: a gene or a job posting is not information content. Only artifacts, fragments, and notes carry content. Domain objects are what you reason about; ICEs are what you reason with.
TypeDB's pattern-matching queries let Claude reason across skill boundaries.
With OpenClaw deployed on a Mac Mini:
10pm: cron job triggers → job_forager.py heartbeat
→ searches Greenhouse, LinkedIn, Remotive
→ filters by your skill profile (min relevance 0.3)
→ stores 12 new candidates in TypeDB
10am: you open Telegram
→ "12 new job candidates found overnight"
→ tap to triage: promote 3, dismiss 9
Later: Claude Code session
→ "Analyze the 3 promoted candidates"
→ Claude reads JD artifacts, runs sensemaking workflow
→ fit scores, skill gap notes, company research stored
| Document | Description |
|---|---|
| Getting Started | Installation and first steps |
| Deployment | Local → Mac Mini → VPS progression |
| OpenClaw Configuration | Gateway, cron jobs, Tailscale Serve |
| Skill Architecture | How to build skills — the three-component pattern |
| Design Concepts | Architecture and design principles |
| Schema Reference | TypeDB schema docs — type hierarchy, ER diagrams, query examples |
| Dashboard Organization | Next.js dashboard structure |
| History | The story of Ibn al-Haytham and project origins |
- Repository: github.com/GullyBurns/skillful-alhazen
- Original CZI Project: github.com/chanzuckerberg/alhazen
Getting Started
Architecture
Core Skills
Domain Skills
- Skills: Scientific Literature
- Skills: ALG Precision Therapeutics
- Skills: Literature Trends
- Skills: They Said Whaaa
- Skills: DisMech
- Skills: Jobhunt
Links