Skip to main content

Projects

A new top-level project is filed in this computer’s workspace: the one probe workspace use set (the setup wizard asks for it), PROBE_WORKSPACE, or --workspace for one call. On a team with several workspaces and none set, the create is refused rather than guessed. A subproject always lives in its parent’s workspace. A project declares a kind from a closed vocabulary — training, evaluation, research, general. The kind decides how the project’s page is laid out, and nothing else; it never restructures an experiment or a run.
A sweep over a frozen model is an experiment inside an evaluation project, not a project of its own. Reaching for a new project every time is how a workspace becomes unreadable.
inference is the old name of evaluation. An older client that still sends inference gets a project stored as evaluation.

Display fields

The Overview page

Every project and experiment has an Overview: the page teammates read to catch up. The agents that record your sessions write it. See summaries for who writes it, how to edit it with probe summary checkout and push, and how a block of your own stays put. --summary writes the project’s own block on that page, which no agent may rewrite:
--summary replaces that whole block, so read it first. The read is rendered back from the page, so check that it contains what you meant rather than matching your file byte for byte. A line containing only [README](https://github.com/owner/repo) embeds that repository’s README at that point.
A phase of a bigger effort is a subproject of it — never a new top-level sibling. A workspace move applies to a top-level project; a subproject follows its root. When the relation is not containment, use a reference instead:
Use it when a review informed a training run, or two efforts share a method — the relation --parent would claim wrongly. It is directed: adding A→B does not add B→A.

Attached code

The timeline is read through GitHub by the backend. Nothing is mirrored, so attaching is cheap and detaching loses nothing. Attaching grants no access: the repository must be public or covered by the team’s GitHub App installation.

Who worked on it

Experiments

An experiment is one question and the runs that answer it.
Reopening an experiment never rewrites its question: probe.init(question=...) on an experiment that exists leaves the question alone. probe experiment set --question replaces it on purpose — use it to fix the wording, never to make the question match the results. An experiment whose question drifts to match its results has stopped being an experiment.
The conclusion is the answer, once the work gives one: what was found and the evidence for it, with both sides’ numbers for a comparison. Change it when later work changes the answer; --conclusion "" clears it. An agent cannot overwrite a conclusion a person wrote. If you cannot write a question, you want a project-direct run instead. That is a legitimate shape, not a shortcut: work with no hypothesis has an honest home, and it is better than an experiment named after your working directory.

Freezing

This is what you cite when the numbers go into a paper or a decision — the run set is pinned and cannot drift underneath the claim.

Reproduction

See snapshots for what those records contain.

Run groups

A group collects peer runs: a sweep, an ensemble, the ranks of one distributed job.
What the sweep tests goes in the experiment’s notes, never in --name: the name is part of the group’s identity within the experiment, so a description added to it makes a second group.

Tags

Tags are free-form labels. The same grammar works on projects, experiments, runs and papers (probe project tag, probe experiment tag, probe run tag, probe paper tag).
Filtering by several tags is AND:

Lineage

Edges connect runs, files, file versions, papers, sources, experiments and projects. They are what make “what produced this checkpoint” answerable later. --source and --target are type:ref; --relation is one of consumes, produces, evaluates_on, promoted_to, derived_from, forked_from, resumed_from, retried_from, branched_from, discovered_via, supersedes, informed_by or relates_to. Adding an edge that exists is not an error: it prints that edge’s id. A wrong edge is fixed by removing it and adding the right one. probe edge remove takes the edge’s id, which probe edge add prints and probe experiment edges lists as id. For what a run trained on or started from, record a use instead: see datasets.

Deleting

A delete moves the thing and everything under it to the trash: a project takes its experiments and runs with it, an experiment its runs, a run its telemetry. Trashed work disappears from every list, search and agent read, and a link to it says it is in the trash. --dry-run changes nothing and prints what would move.
Only Probe staff can restore from the trash, for 21 days after the delete; then it is deleted for good. To get something back, email support@prbe.ai. There is no restore command or button.A project with live subprojects refuses to delete unless you pass --recursive. Deleting requires a credential with the delete scope.
Files are different: probe artifact delete does not use the trash and is permanent. See artifacts.