Lightweight local agent that indexes, retrieves, and wikis the workspace. The crew member who knows where everything is.
Project description
deckhand
The crew member who knows where everything is.
deckhand is a lightweight local agent that indexes, retrieves, and wikis your workspace. File-first (exo-filed). Human-readable. No hidden database.
What it does
- Indexes every file in your workspace (code, docs, configs)
- Builds wiki pages that a human can
cat— REPOS.md, CONNECTIONS.md, GLOSSARY.md, STATUS.md - Searches via BM25 (pure Python, no dependencies)
- Batches tasks from PLANNER_QUEUE.md, OPEN_QUESTIONS.md, and recent file changes
- Studies repos off-watch — writes daily observation logs
- Runs forever in a loop: index → wiki → batch → study → sleep → repeat
Install
pip install deckhand
Use
# Index the workspace and generate wiki
deckhand index /path/to/workspace
# Search for something
deckhand search /path/to/workspace "conservation law"
# Generate just the wiki
deckhand wiki /path/to/workspace
# Collect tasks into a batch
deckhand batch /path/to/workspace
# Run the deckhand loop forever (index → wiki → batch → study → sleep)
deckhand run /path/to/workspace --sleep 300
The wiki output
After indexing, deckhand writes to deckhand-wiki/:
- REPOS.md — table of every repo, one line each. Health indicators (✅ ok, ⚠️ untested, 🔩 stub, ❌ no-readme)
- CONNECTIONS.md — cross-reference graph. Which repos reference which.
- GLOSSARY.md — top 100 terms across the workspace
- STATUS.md — health summary. Lists repos that need tests, need READMEs, or may be abandoned
- INDEX.md — machine-readable JSON index
- BATCH.md — collected tasks from PLANNER_QUEUE + OPEN_QUESTIONS + recent changes
- logs/YYYY-MM-DD.md — daily study observations
Why exo-filed?
A vector database is opaque. You can't cat it. You can't grep it. You can't diff it in git.
deckhand's index is markdown + JSON. A human can open REPOS.md and understand the fleet in 30 seconds. An agent can read CONNECTIONS.md instead of re-reading 4,000 repos.
When the corpus gets too large for file-based search (>10K files), build the optional vector twin:
from deckhand.vector_twin import VectorTwin # coming in v0.2
The vector twin is ALWAYS accompanied by its file-twin. You can always fall back to the human-readable version.
The maritime metaphor
On a boat, the deckhand is the crew member who:
- Knows where every line, every shackle, every tool is stored
- Prepares tasks for the captain (batches)
- Maintains the logbook (study logs)
- Studies charts off-watch (studies repos when idle)
- Doesn't need to be told what to do — knows the direction of the voyage
The deckhand doesn't replace the captain (the director model). The deckhand makes the captain more efficient by pre-processing the workspace into a form the captain can act on in fewer calls.
License
MIT
Built by SuperInstance. The deckhand knows where everything is.
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 si_deckhand-0.1.0.tar.gz.
File metadata
- Download URL: si_deckhand-0.1.0.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b7deefb2029a78b96010403e1b6cc8629ea416735a173bace49365b6785979a
|
|
| MD5 |
93c146df637818b79b71e57ea1fedec5
|
|
| BLAKE2b-256 |
0e53bb393fd0d535e02264bba914aed3bb420f2b44b56d680947677b6dcd1037
|
File details
Details for the file si_deckhand-0.1.0-py3-none-any.whl.
File metadata
- Download URL: si_deckhand-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc871c5c401ac012ee5e18c93fa9e1e0747f14e042fc76b88500c7eade166415
|
|
| MD5 |
6e8f4f3b578d8f97699eba5b63da10a1
|
|
| BLAKE2b-256 |
c4dbfd0f3c1881fca1af88fcfc46f9191d6f6f833fd6679feecad6cc059769a8
|