DeepLoop autonomous research autopilot control plane.
Project description
DeepLoop
Structured research missions from a local project folder — with visible autonomy boundaries, durable mission state, and an explicit operator inbox.
DeepLoop helps researchers and operators run structured work from the artifacts already on disk instead of rebuilding everything around one long chat. It keeps the loop moving, pauses only at real safety, authority, or support boundaries, and makes the path legible when you need to inspect or redirect it.
DeepLoop owns behavior and orchestration; substrate repos own reusable domain or science rules.
Why it matters
- Start from real project artifacts: bootstrap from a plain project folder, not just a prompt.
- Keep control visible:
status,inbox, andresumemake the operator inbox explicit when DeepLoop needs a real decision. - Inspect the loop: operator-facing summaries expose runtime telemetry, inner-loop progress, stage-kernel activity, reroutes, and temporary gaps instead of hiding them in raw JSON.
- Keep evidence close to the work: your project folder stays focused on facts, docs, and outputs while DeepLoop keeps durable mission state.
- Use autonomy with governance: the shipped path includes explicit release boundaries, autonomy governance, and reviewed promotion surfaces.
- Separate platform from domain logic: DeepLoop runs the loop; substrate repos keep reusable methods, constraints, and science rules.
Getting started
-
Install DeepLoop
Choose the installation path that matches your use case:
-
Standard user — install from PyPI (no local checkout required):
pip install deeploop
For the latest unreleased commit without a local checkout, use the GitHub URL directly:
pip install git+https://github.com/tnetal/DeepLoop.git
Both paths copy the library into
site-packages, fully isolating running missions from any local source changes. -
Contributor — clone the repo and install in editable mode with dev extras:
git clone https://github.com/tnetal/DeepLoop.git cd DeepLoop pip install -e ".[dev]"
Warning: Editable installs tie every spawned Python subprocess directly to the live source tree.
deeploop startautomatically snapshots the package into~/.deeploop/runtime_cache/before launching the daemon, insulating the background mission from subsequent source edits. It also warns if the working tree is dirty at launch time. Even so, avoid switching Git branches or introducing syntax errors during a live mission run. -
Hybrid user (running long missions and developing features simultaneously): maintain two separate clones — one stable clone installed with
pip install git+…orpip install .for running missions, and one development clone withpip install -e ".[dev]"for writing PRs. Never run a background mission from the development clone.
Or use the documented Conda path (installs in non-editable mode by default):
conda env create -n deeploop -f environment.yml
-
-
Prepare the workspace and validate the supported path
make setup make public-bootstrap-check
-
Prepare a provider
-
Run the canonical example or your own plain-folder project
-
canonical example:
examples/translation-budget-ladder/ -
optional copy step:
cp -R examples/translation-budget-ladder PROJECT_FOLDER
-
fastest path:
deeploop run --project-root examples/translation-budget-ladder --until-complete
Note: If
<project-folder>/.deeploop/missions/*.yamlfiles exist,deeploop runautomatically uses the first one instead of bootstrapping a blank mission. For a plain folder with no existing config, it bootstraps from the folder's facts. To target a specific explicit config directly, usedeeploop init --config <mission-config.yaml>followed bydeeploop start --mission-state <mission-state.json>. -
explicit operator path:
deeploop init --project-root examples/translation-budget-ladder --force
On a copied folder, substitute
PROJECT_FOLDERin the commands above. -
-
Use the operator CLI when a run pauses
deeploop status --mission-state MISSION_STATE_PATH deeploop inbox --mission-state MISSION_STATE_PATH deeploop resume --mission-state MISSION_STATE_PATH
The deeploop CLI is the single entry point — run, init, status, inbox, resume, and more are all subcommands.
Best fit today
DeepLoop is best when you already have:
- a project folder on disk
- a clear mission or question
- an operator who can check
statusand respond when the operator inbox opens - a need for bounded autonomy, durable state, and evidence-aware summaries
Public alpha — best on Linux with Python 3.11; not claiming a fully automatic experience for everyone. See the roadmap for current scope.
Key capabilities
Operating modes
sandboxed-yolofor the fastest bounded path when you want DeepLoop to keep moving inside the supported guardrailsmanagedwhen you want intervention hooks before DeepLoop continues; managed mode can surface a bounded retry, reroute, or downscope step for reviewhuman-directedwhen you want to approve important choices yourself
What you can inspect
- operator-facing status surfaces runtime telemetry, inner-loop progress, ratchets, reroutes, and temporary-gap recovery hints
- stage-kernel execution stays visible instead of disappearing behind one opaque agent loop
- the operator inbox keeps handoffs explicit when DeepLoop reaches a real decision or support boundary
Reusable methods and governance
- keep skills for reusable methods and domain/science rules in substrate repos
- use Release posture for the current claim and Autonomy governance for current boundaries
- review the current multi-substrate proof as proof of a bounded contract, not a claim of broad portability
Documentation
- Docs home
- Getting started
- Examples
- Plain-folder starter
- Release posture
- Portable bootstrap
- Provider setup
- Provider selection
- Autonomy governance
- Multi-substrate proof
- Technical reference
Contributing
Contributions, bug reports, and discussion are welcome.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deeploop-0.1.0.tar.gz.
File metadata
- Download URL: deeploop-0.1.0.tar.gz
- Upload date:
- Size: 359.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
729a8aa19c2404d5b0760a908ca72a876d06eb212e8341cfbe5d8f6ab6e14b2b
|
|
| MD5 |
debedabef1ccc4127d2da156c1e75a0a
|
|
| BLAKE2b-256 |
96726f66c533c5a77d611d14ce3c8bdb1b807ca27194916ed92230967dbbf22e
|
Provenance
The following attestation bundles were made for deeploop-0.1.0.tar.gz:
Publisher:
publish.yml on tnetal/DeepLoop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deeploop-0.1.0.tar.gz -
Subject digest:
729a8aa19c2404d5b0760a908ca72a876d06eb212e8341cfbe5d8f6ab6e14b2b - Sigstore transparency entry: 1391833502
- Sigstore integration time:
-
Permalink:
tnetal/DeepLoop@7d63e417b9f851adacca7f37518a591d6ff7e3f8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tnetal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7d63e417b9f851adacca7f37518a591d6ff7e3f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file deeploop-0.1.0-py3-none-any.whl.
File metadata
- Download URL: deeploop-0.1.0-py3-none-any.whl
- Upload date:
- Size: 293.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5623a8dc30531357d3928b899f7caaf1ac676af38a4360418368cf0dcd3d7732
|
|
| MD5 |
6174e61951634924313d90ee7b73cc5d
|
|
| BLAKE2b-256 |
3c172a2f2b15338293888b214168160f667e0a38a50246e9f93afec1515989b0
|
Provenance
The following attestation bundles were made for deeploop-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on tnetal/DeepLoop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deeploop-0.1.0-py3-none-any.whl -
Subject digest:
5623a8dc30531357d3928b899f7caaf1ac676af38a4360418368cf0dcd3d7732 - Sigstore transparency entry: 1391833504
- Sigstore integration time:
-
Permalink:
tnetal/DeepLoop@7d63e417b9f851adacca7f37518a591d6ff7e3f8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tnetal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7d63e417b9f851adacca7f37518a591d6ff7e3f8 -
Trigger Event:
release
-
Statement type: