Projects#
A project is a folder that collects everything about one piece of work: links, documents, data, scripts, prompts, experiments, curves, graphs and specs.
Ctrl+Shift+P opens the Projects panel. Create a project, pick General or Deep
research, and it appears as a folder under projects/<id>/ in your scripts folder:
projects/my-project/
├─ ohm.project.json
├─ links.json
├─ docs/ data/ scripts/ files/ annotations/
├─ prompts/ *.prompt.json
├─ curves/ *.curve.json
├─ experiments/*.experiment.json (+ <name>.runs/)
├─ graphs/ *.graph.json
└─ specs/ *.spec.json
Because it is all plain files, the Scripts panel shows it, scripts can read and write it, and git can track it.
The panel#
Sections for Links, Specs, Prompts, Experiments, Curves, Graphs,
Files, Docs, Data and Scripts. Each item opens its own editor; each section's
+ creates a new one.
Add a link by pasting a URL into the box at the top. Links dedupe on the URL, so a research run that finds the same source twice stores it once.
Deep research#
A research project holds a question and is seeded with scripts/research.ohm plus an
equivalent graph. Type the question in the panel and press ▶ Run deep research.
What it does:
- Splits the question into sub-questions (
\SelfAsk_{\Psi}). - For each, concurrently: searches (
\Search_{\Gamma}) in a hidden tab, saves every hit as a project link immediately, fetches the pages (\Fetch_{\Gamma}), picks the relevant passages (\Retrieve_{\Gamma}) and answers (\CoT_{\Psi}). - Combines the answers (
\Join_{\Sigma}) and adds citations (\Cite_{\Gamma}). - Writes
docs/report.mdand prints the report.
Sources are saved as they are found, so a run you interrupt still leaves you the links.
The script is yours — open it and change the breadth, the depth, the operators or the report format. That is the point of the pipeline being a script rather than a button.
What is in a new project#
Every project starts with a README, a sample dataset, a summarize prompt, a temperature
curve, a summarize-sweep experiment and a plan spec — enough to see how the pieces fit
together. Research projects also get the research script and graph.
From a script#
project.use("my-project")
print(project.info().question)
project.addLink({ url = "https://example.com", title = "Example", source = "manual" })
project.writeDoc("notes.md", "# Notes\n")
for _, name in ipairs(project.docs()) do print(name) end
local rows = project.readData("sample.jsonl")
prompts, curves, experiments and specs are all available the same way — see the
script API.
Moving a project#
Export a bundle (one JSON file with everything, including documents and annotations) or mirror it into the browser database as a backup. See Storage.