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:

  1. Splits the question into sub-questions (\SelfAsk_{\Psi}).
  2. 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}).
  3. Combines the answers (\Join_{\Sigma}) and adds citations (\Cite_{\Gamma}).
  4. Writes docs/report.md and 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.