bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
LLM-compiled knowledge base: ingest papers, notebooks and data, and distill them into an interlinked org-mode wiki with a searchable graph database. Includes a crucible agent skill for Claude Code and
SkillsPython · HTMLGitHub @jkitchinSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
LLM-compiled knowledge base: ingest papers, notebooks and data, and distill them into an interlinked org-mode wiki with a searchable graph database. Includes a crucible agent skill for Claude Code and other agents.
Loading the full README.
Read the full README ↗#+TITLE: Crucible: LLM-Compiled Knowledge Base #+AUTHOR: John Kitchin #+DATE: [2026-04-03 Fri]
[[./crucible.png]]
Crucible is a personal knowledge base system where primary sources (papers, notebooks, data) are ingested and distilled by an LLM into a structured, interlinked org-mode wiki. The wiki is the LLM's domain: you rarely edit it directly. Instead, you converse with Claude, and it reads, writes, and maintains the wiki on your behalf.
The core idea, inspired by Andrej Karpathy's LLM knowledge base pattern, is that raw data from various sources is collected, then compiled by an LLM into a wiki of org-mode files, then operated on by various CLI commands to do Q&A and to incrementally enhance the wiki. Everything is viewable in Emacs via scimax.
Key design principles:
From PyPI:
#+BEGIN_SRC bash pip install crucible-llm #+END_SRC
Or from source for development:
#+BEGIN_SRC bash git clone https://github.com/jkitchin/crucible.git cd crucible pip install -e . #+END_SRC
Then initialize a new crucible project and wire it into Claude Code:
#+BEGIN_SRC bash cd /path/to/your/project crucible init --root . crucible install # installs Claude Code skill + CLAUDE.md directive #+END_SRC
The =install= command does three things:
=init= registers the project and installs the skill, but only =install= writes the =~/.claude/CLAUDE.md= directive. There is one directive, so a new crucible does not take it over until you run =install= in it.
To remove: =crucible uninstall=.
** Installing the skill with knowhow
The skill lives in =skills/crucible/SKILL.md= and follows the [[https://agentskills.io/specification][Agent Skills specification]], so it can also be installed with [[https://github.com/jkitchin/knowhow][knowhow]] (or =npx skills=) for Claude Code and other agents (VS Code, Codex, OpenCode, Gemini CLI, Cursor):
#+BEGIN_SRC bash uvx knowhow add jkitchin/crucible --skill crucible # this project uvx knowhow add jkitchin/crucible --skill crucible -g # global
#+END_SRC
The skill still needs the =crucible= CLI on your PATH. Installing it this way does not generate the manifest or the =~/.claude/CLAUDE.md= directive, so run =crucible install= inside your project if you want those too. Contributors can check the skill with =uvx knowhow validate .=.
For semantic search, you also need ollama running with an embedding model:
#+BEGIN_SRC bash ollama pull nomic-embed-text crucible embed #+END_SRC
A crucible project keeps everything in a =.crucible/= directory at its root:
#+BEGIN_EXAMPLE your-project/ .crucible/ CLAUDE.md Conventions for agents working in the wiki .gitignore Excludes crucible.db and sources/external/ crucible.db Wiki graph database (SQLite, regenerable) references.bib Bibliography of ingested sources sources/ external/ Copyrighted material (gitignored) pdfs/ Academic papers, reports web/ Web clippings notebooks/ Your own ELN entries (shareable) data/ Your own experimental data (shareable) wiki/ index.org Auto-generated master index MANIFEST.md Summary for agent discovery concepts/ One topic per file summaries/ One per ingested source comparisons/ Cross-source analysis methods/ Technique and methodology articles #+END_EXAMPLE
The global registry of all crucibles on the machine is
=/.crucible/registry.json=. Because =/.crucible/= is the registry, the
home directory itself cannot be a crucible project.
This repository holds the Python package (=src/crucible/=), the agent skill (=skills/crucible/SKILL.md=, Agent Skills spec), the documentation (=docs/=) and the tests (=tests/=).
See [[file:docs/tutorial.org][the tutorial]] for a complete walkthrough. The short version:
#+BEGIN_SRC bash
crucible ingest paper.pdf
curl -sL "URL" | pandoc -f html -t org | crucible ingest - -t "Title" --type web
crucible ingest "papers/*.pdf"
crucible sync
crucible embed
crucible search "activation energy" # hybrid (auto) crucible search "how does temperature affect rate" # finds by meaning crucible search "catalyst" --mode fts # keyword only
crucible concepts # list all topics crucible concept thermodynamics # articles on a topic crucible backlinks wiki/concepts/activation-energy.org crucible related wiki/concepts/activation-energy.org crucible history wiki/comparisons/synthesis.org # derivation chain
This is the beginning of the README. Read the rest at the original. Read the full README ↗