Terraform-inspired filesystem orchestration tool
Project description
seed-cli
seed is a Terraform-inspired, spec-driven filesystem orchestration tool.
It allows you to declaratively describe directory structures, generate plans, diff against reality, safely apply changes, detect drift, lock state, and collaborate using immutable execution plans.
Think Terraform for directory trees.
Features
- Tree / YAML / JSON / stdin / image-based specs
- Deterministic planning (
seed plan) - Immutable plans (
seed plan --out plan.json) - Safe execution (
seed apply plan.json) - Sync with deletion (
seed sync --dangerous) - State locking + heartbeat renewal
- Partial plans (
--target scripts/) - Spec inheritance (
@include) - Variables (
{{project_name}}) - Plugins
- Checksums & drift detection
- CI & pre-commit hooks
- Graphviz execution graphs (
--dot)
Install
pip install seed-cli
pip install "seed-cli[image]" # OCR support
Core Workflow
seed plan dir_structure.tree --out plan.json
seed apply plan.json
Commands
| Command | Description |
|---|---|
| plan | Generate execution plan |
| apply | Apply spec or plan |
| sync | Apply + delete extras |
| diff | Compare FS vs spec |
| capture | Capture FS to spec |
| doctor | Lint & repair specs |
| export | Export filesystem state or plan |
| lock | Manage state locks |
| hooks | Install git hooks |
Example Spec
@include base.tree
scripts/
├── build.py (@generated)
└── notes.txt (@manual)
State & Locking
State is stored in .seed/state.json.
Locks are stored in .seed/lock.json.
Locks:
- TTL-based
- Auto-renewed during apply
- Force-unlock available
Partial Plans
seed plan spec.tree --target scripts/
Graphviz
seed plan spec.tree --dot > plan.dot
dot -Tpng plan.dot -o plan.png
Plugins
seed-cli is extensible by default. You can create your own plugins and use them to do any dir modifications, transformations, or anything you can conceive and is not captured in the previous statement.
Note: this is Work In Progress.
Local plugins live in:
.seed/plugins/*.py
Philosophy
seed-cli is:
- Declarative
- Deterministic
- Auditable
- Safe by default
License
Modified MIT file.
Read the LICENSE.md file in this project.
Project details
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 seed_cli-1.0.2.tar.gz.
File metadata
- Download URL: seed_cli-1.0.2.tar.gz
- Upload date:
- Size: 44.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d41131fc24977c6c875bcee5fa33c1ceccf284518081b60125cd49ff96ea5cd
|
|
| MD5 |
fe97424ddf4247a535b669f3520efc55
|
|
| BLAKE2b-256 |
531717d9caf01452a09c9a1b3015185b41d35436f18f58f366ca5e26426c3f38
|
File details
Details for the file seed_cli-1.0.2-py3-none-any.whl.
File metadata
- Download URL: seed_cli-1.0.2-py3-none-any.whl
- Upload date:
- Size: 46.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcb125bff647a9060a823316eadc3760071c5a48ebbcbf6198917d8e77d8a0dc
|
|
| MD5 |
77408a5ba193c296f9134cfe3462dcd5
|
|
| BLAKE2b-256 |
cd681a024f80ea3a0eebf9f192094e700e382f298205619c9b81ba8ab3ae685e
|