Skip to content

Commit 7c45716

Browse files
committed
docs: prepare GERM public alpha release
1 parent af17112 commit 7c45716

8 files changed

Lines changed: 285 additions & 49 deletions

File tree

CITATION.cff

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cff-version: 1.2.0
2-
message: "If you use germ in research, please cite the companion Sonic Field Labs papers."
2+
message: "If you use GERM in research, please cite this software release."
33
title: "germ: a lineage-aware cultivation environment for generative microsound"
44
authors:
55
- family-names: "Isaza"
@@ -10,21 +10,4 @@ date-released: "2026-07-02"
1010
license: "MPL-2.0"
1111
repository-code: "https://github.com/sonicfieldlabs/germ"
1212
abstract: "germ is a local generative microsound environment whose generated sounds retain prompts, parents, mutations, listening metadata, and Earworm-compatible lineage."
13-
preferred-citation:
14-
type: article
15-
title: "The Listening Stack: Agentic Sonic Computation for Hybrid Listening Ecologies"
16-
authors:
17-
- family-names: "Isaza"
18-
given-names: "eme"
19-
affiliation: "Sonic Field Labs"
20-
year: 2026
21-
notes: "Submission draft prepared for the Agentworld special issue of Antikythera: Journal for the Philosophy of Planetary Computation."
22-
references:
23-
- type: article
24-
title: "germ: Generative Cultivation and Sonic Lineage"
25-
authors:
26-
- family-names: "Isaza"
27-
given-names: "eme"
28-
affiliation: "Sonic Field Labs"
29-
year: 2026
30-
notes: "Companion paper in preparation."
13+
url: "https://sonicfield.org/stack"

CONTRIBUTING.md

Lines changed: 67 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,65 @@
1-
# Contributing
1+
# Contributing to GERM
22

3-
germ is licensed under MPL-2.0. By contributing, you agree that your
4-
contribution is provided under the same license.
3+
GERM is a public-alpha cultivation environment and open research release.
4+
Contributions are welcome when they improve its sonic practice, lineage,
5+
provider accountability, safety, accessibility, or reproducibility.
56

6-
Keep the local-first contract intact:
7+
## Begin Here
78

8-
- Do not add cloud egress unless it is explicitly opt-in and documented.
9-
- Do not log secrets, tokens, absolute private paths, or raw prompt data beyond
10-
the local metadata files the user asked germ to create.
11-
- Keep generated audio, uploads, scratch data, and personal `.env` files out of
12-
git.
13-
- Add or update tests when changing API behavior, metadata lineage, storage, or
14-
safety limits.
15-
- Update `docs/api_reference.md` when adding, removing, or renaming a FastAPI
16-
route.
9+
1. Open an issue before a large graph, API, provider, or storage change.
10+
2. Fork the repository and create a focused branch.
11+
3. Install the model-free development environment:
1712

18-
Before proposing a release change, run:
13+
```bash
14+
uv sync --extra dev
15+
```
16+
17+
4. Develop against the mock provider unless the change specifically concerns
18+
a real provider. Tests and review must not require gated weights or a live
19+
account.
20+
5. Add tests and public documentation, run the checks below, and describe any
21+
lineage, storage, network, or licensing effect in the pull request.
22+
23+
Do not commit model weights, generated audio, uploads, credentials, `.env`
24+
files, local paths, private prompts, personal sessions, or provider responses.
25+
26+
## Contracts to Preserve
27+
28+
- Cloud egress remains explicit, opt-in, and documented.
29+
- Secrets and absolute private paths never enter metadata, lineage, fixtures,
30+
logs, screenshots, or documentation.
31+
- A generation enters Akousmata only through an explicit remember request.
32+
- Parentage, prompts, models, parameters, mutations, and listening references
33+
remain inspectable rather than being flattened into one caption.
34+
- Server limits, path containment, and CV/MIDI safety gates remain testable.
35+
- API changes update `docs/api_reference.md`; provider changes update
36+
`docs/provider_design.md` and model attribution where relevant.
37+
38+
## Scoped Contribution Opportunities
39+
40+
These public-alpha tasks have clear review boundaries:
41+
42+
1. **Provider contract fixtures.** Add a mock or recorded-response fixture that
43+
exercises readiness, progress, cancellation, error metadata, and output
44+
validation without a network call or model weights.
45+
2. **Listening Stack round trip.** Extend a test for
46+
Oída → GERM → Akousmata → Oída so parent identifiers, operation, prompt,
47+
provider, retention choice, and fresh listening remain intact.
48+
3. **Dashboard accessibility.** Test one complete keyboard and screen-reader
49+
path through adding a module, configuring it, starting a mock render, and
50+
opening its result. Include visible focus and reduced-motion behavior.
51+
4. **Reproducible provider report.** Document one exact OS, CPU/GPU, Python,
52+
provider revision, checkpoint, and short render result. Share metadata and
53+
license-safe observations, never weights or copyrighted source audio.
54+
55+
Small documentation fixes do not need an issue. Larger tasks should state
56+
acceptance criteria and which contract they touch.
57+
58+
## Local Checks
1959

2060
```bash
21-
.venv/bin/pytest -q
22-
.venv/bin/ruff check server tests
61+
uv run pytest -q
62+
uv run ruff check server tests
2363
node --check dashboard/static/app.js
2464
node --check dashboard/static/dish.js
2565
node --check dashboard/static/micro_forms.js
@@ -29,3 +69,14 @@ node --check dashboard/static/ui_utils.js
2969
node --check dashboard/static/wavetable_synth.js
3070
node scripts/smoke_dashboard.mjs
3171
```
72+
73+
Use `./launch_germ.command` and the mock provider for a manual dashboard smoke
74+
test. Do not place the resulting runtime data in Git.
75+
76+
## License and Rights
77+
78+
GERM is licensed under MPL-2.0. By submitting a contribution, you confirm that
79+
you have the right to provide it under that license. Third-party code, model
80+
interfaces, fixtures, and media need explicit compatible provenance. See
81+
[models and licensing](docs/models-and-licensing.md) before adding a provider
82+
or checkpoint surface.

NOTICE

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,13 @@ stable-audio-3 @ git+https://github.com/Stability-AI/stable-audio-3.git
1818
That dependency is not vendored in this repository. Install it only if your use
1919
case and environment are compatible with the upstream project and model terms.
2020

21+
The upstream Stable Audio 3 code repository currently identifies an MIT code
22+
license. Stable Audio model weights use separate model terms, including the
23+
Stability AI Community License for published Stable Audio 3 checkpoints. Those
24+
terms are not replaced by GERM's MPL-2.0 license.
25+
2126
Earworm integration surfaces map germ metadata into Earworm 0.4-compatible
2227
sessions for local provenance, consent, retention, and lineage workflows.
28+
29+
See docs/models-and-licensing.md for direct upstream references and the full
30+
operator responsibility boundary.

README.md

Lines changed: 95 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,72 @@
11
# GERM
22

3-
GERM is a local-first modular laboratory for generative microsound. It treats
4-
sound as matter that can be generated, granulated, mutated, routed, listened
5-
to, cultivated, and traced through lineage.
3+
> **Public alpha · Open research release · Local-first · Open-source · Under active development**
4+
5+
GERM is a local cultivation environment for generative microsound. It treats
6+
sound as material that can be generated, granulated, grafted, mutated,
7+
listened to, and traced through lineage. A listening from Oída can become a
8+
prompt or source in GERM; a successful render can become a descendant in
9+
Akousmata and return to Oída for another listening.
610

711
Current release: `0.2.0`.
812

913
GERM is an independent Sonic Field Labs project. It can use Stable Audio 3
1014
providers, but it is not an official Stability AI product.
1115

16+
![GERM dashboard with a prompt module in the cultivation graph](docs/assets/germ-dashboard.png)
17+
18+
## Try It Without a Model
19+
20+
The default mock provider exercises the dashboard, graph, jobs, metadata,
21+
lineage, and WAV-writing path without downloading a model:
22+
23+
```bash
24+
uv sync --extra dev
25+
./launch_germ.command
26+
```
27+
28+
Open `http://127.0.0.1:5178/dashboard`. The mock provider emits a test signal,
29+
not model-generated sound, so it is safe for installation and integration
30+
checks but not a creative quality demonstration.
31+
32+
## What You Can Do
33+
34+
- Generate or transform sound through mock, local Stable Audio 3 Python,
35+
Apple Silicon MLX, or opt-in Stability API providers.
36+
- Build a modular graph across grains, cells, swarms, tissues, controls,
37+
effects, and a realtime Chamber.
38+
- Graft, inpaint, continue, compare, mutate, record, and collect sound while
39+
retaining prompts, seeds, models, parameters, parents, and operations.
40+
- Import an Oída listening as sound, prompt, or lineage and ask Oída to listen
41+
to a cultivated result again.
42+
- Write a successful generation to the shared Akousmata store only when
43+
requested.
44+
45+
## Requirements
46+
47+
| Path | Operating system | Hardware and software |
48+
| --- | --- | --- |
49+
| Mock service | macOS or Linux | Python 3.10+, `uv`; CPU only; no weights |
50+
| Stable Audio 3 MLX | Apple Silicon macOS | Official `sa3` MLX tools and separately accepted model weights |
51+
| Stable Audio 3 Python | Upstream-compatible macOS or Linux | Optional Python provider and hardware appropriate to the chosen checkpoint; a supported GPU is strongly recommended |
52+
| Stability API | Any service-supported system | Network access, an operator-owned account, API key, and acceptance of service terms |
53+
| Native shell | macOS 13+ | Swift 5.9/Xcode command-line tools; the Python service still performs all audio work |
54+
55+
Model access, RAM or VRAM use, and generation time vary substantially by
56+
checkpoint and provider. GERM reports provider diagnostics rather than
57+
promising one universal hardware minimum.
58+
59+
## Release Guide
60+
61+
| Question | Where to begin |
62+
| --- | --- |
63+
| How does it work? | [Micro/Matter architecture](docs/germ_micro_architecture.md) and [provider design](docs/provider_design.md) |
64+
| How does it connect? | [The Listening Stack](https://sonicfield.org/stack) and [Oída integration](docs/oida-integration.md) |
65+
| Which models and licenses apply? | [Models and licensing](docs/models-and-licensing.md) |
66+
| What is unfinished? | [Known limitations](#known-limitations) and [roadmap](ROADMAP.md) |
67+
| How can I help? | [Contribution guide](CONTRIBUTING.md) |
68+
| How should I cite it? | [CITATION.cff](CITATION.cff) |
69+
1270
## What works
1371

1472
- Text-to-audio generation, seed/batch variation, audio-to-audio grafting,
@@ -47,6 +105,11 @@ library, and lineage model.
47105

48106
## Listening Stack integration
49107

108+
**Oída hears. GERM cultivates. Akousmata remembers. AKOÚŌ structures. Earworm
109+
routes.** Together they form
110+
[The Listening Stack](https://sonicfield.org/stack), open infrastructure for
111+
listening, re-listening, sonic memory, and cultivation.
112+
50113
| Component | Version / contract | GERM integration |
51114
| --- | --- | --- |
52115
| [OÍDA](https://github.com/sonicfieldlabs/oida) | 0.6.0 / `oida/gateway/v0.2` | Re-listen to generated sound, derive editable prompts, and retain a listening only when requested. |
@@ -59,9 +122,12 @@ library, and lineage model.
59122
The core handoff is:
60123

61124
```text
62-
OÍDA listens → Akousmata remembers → GERM cultivates
63-
^ |
64-
+----------- listen again --------+
125+
Sound → Oída hears → GERM cultivates → Akousmata remembers
126+
↑ | |
127+
+------------- listen again -----------+
128+
129+
AKOÚŌ structures claims and routes. Earworm routes events,
130+
provenance, retention, and lineage between the organs.
65131
```
66132

67133
## Install
@@ -164,6 +230,27 @@ curl -X POST http://127.0.0.1:5178/generate \
164230
- A generation written to Akousmata records only portable identifiers and
165231
relative/protocol-safe provenance. Machine-specific paths stay local.
166232

233+
## Known Limitations
234+
235+
- This is a public alpha. Session, graph, and provider interfaces can still
236+
change before 1.0 even though public contracts are documented.
237+
- Jobs are held in memory. A server restart loses job state, while completed
238+
WAV and metadata files remain on disk.
239+
- A queued Python-provider job can be cancelled, but an in-process render may
240+
finish because the upstream API has no safe mid-render interrupt. MLX
241+
subprocess jobs support active cancellation.
242+
- Real-model access is separately licensed and may be gated. Output quality,
243+
latency, determinism, and hardware use vary by provider and checkpoint.
244+
- The native macOS shell is built locally and is unsigned by default.
245+
- Physical CV output is disabled. MIDI may use browser Web MIDI or an optional
246+
configured local backend; otherwise the server records intent only.
247+
- Hosted routes are explicit opt-ins and can send prompts, source audio, or
248+
derived material to their provider. The default mock route stays local.
249+
- GERM performs bounded signal checks but does not replace Oída's listening and
250+
claim-accountability layer.
251+
252+
The [roadmap](ROADMAP.md) identifies current research priorities and non-goals.
253+
167254
## Development
168255

169256
```bash
@@ -184,6 +271,8 @@ node scripts/smoke_dashboard.mjs
184271
- [Local setup](docs/local_setup.md)
185272
- [Native macOS shell](docs/macos-shell.md)
186273
- [Troubleshooting](docs/troubleshooting.md)
274+
- [Models and licensing](docs/models-and-licensing.md)
275+
- [Public roadmap](ROADMAP.md)
187276
- [Changelog](CHANGELOG.md)
188277

189278
## License

ROADMAP.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# GERM Roadmap
2+
3+
GERM 0.2.0 is a public alpha and open research release. This roadmap names the
4+
work in view without promising dates or production stability.
5+
6+
## Working Now
7+
8+
- A model-free mock route for installation, interface, metadata, and lineage
9+
testing.
10+
- Stable Audio 3 Python, Apple Silicon MLX, and opt-in Stability API provider
11+
surfaces.
12+
- Modular Micro/Matter graph, realtime Chamber, library, Herbarium, strains,
13+
wavetables, controls, sessions, and generation lineage.
14+
- Oída import and re-listening with explicit Akousmata memory writes.
15+
- A shared browser dashboard and native macOS shell over one server-owned
16+
state.
17+
18+
## Next Research Priorities
19+
20+
- Expand provider contract fixtures for readiness, progress, cancellation,
21+
timeouts, metadata, and failure recovery.
22+
- Strengthen round-trip lineage tests across Oída, GERM, Earworm, and
23+
Akousmata.
24+
- Improve keyboard, screen-reader, reduced-motion, and low-vision access to the
25+
modular graph and Chamber.
26+
- Publish reproducible performance and memory reports for verified provider,
27+
checkpoint, and hardware combinations.
28+
- Make provider, model, LoRA, license, and source-listening attribution easier
29+
to inspect and export.
30+
- Test durable job recovery designs without hiding partial or failed renders.
31+
32+
## Toward a Stable Contract
33+
34+
- Stabilize import, generation, job, and lineage schemas from public use.
35+
- Document migrations for sessions, graph state, strains, and metadata.
36+
- Broaden reproducible packaging beyond the source-based macOS shell.
37+
- Clarify which controller outputs are active, simulated, browser-routed, or
38+
intentionally disabled.
39+
40+
## Non-Goals
41+
42+
GERM is not intended to hide model provenance, treat every generation as an
43+
original without ancestry, infer rights from a prompt, or enable uncalibrated
44+
physical CV output. Local-first is a technical boundary, not an automatic
45+
claim of ethical or ecological adequacy.
46+
47+
See [CONTRIBUTING.md](CONTRIBUTING.md) for scoped ways to participate.

docs/assets/germ-dashboard.png

33 KB
Loading

docs/models-and-licensing.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Models and Licensing
2+
3+
GERM starts with a mock provider that needs no model. Stable Audio 3 code,
4+
weights, hosted services, LoRAs, datasets, and accounts are optional operator
5+
choices and are not bundled in this repository.
6+
7+
## Repository License
8+
9+
GERM source code is licensed under MPL-2.0. That license covers this
10+
repository's code. It does not grant rights to third-party models, datasets,
11+
source recordings, provider services, or generated material.
12+
13+
## Stable Audio 3 Code and Weights
14+
15+
The optional Python provider references the official
16+
[Stable Audio 3 repository](https://github.com/Stability-AI/stable-audio-3).
17+
Its repository [code license](https://github.com/Stability-AI/stable-audio-3/blob/main/LICENSE)
18+
is MIT at the time of this release.
19+
20+
Stable Audio 3 model weights are separately licensed. For example, the
21+
[Stable Audio 3 Small SFX model card](https://huggingface.co/stabilityai/stable-audio-3-small-sfx)
22+
identifies the Stability AI Community License and may identify additional
23+
component terms. Some checkpoints are gated. The upstream model card and terms
24+
for the exact checkpoint always control.
25+
26+
GERM does not redistribute weights or accept upstream terms for the operator.
27+
Before installing a model:
28+
29+
- review the code, weight, component, dataset, and commercial-use terms;
30+
- record the exact checkpoint and revision used;
31+
- confirm that the hardware and dependency combination is supported upstream;
32+
- retain any attribution or notice required for publication or distribution.
33+
34+
The MLX installer prepares the official provider path on Apple Silicon; it
35+
does not change the model's license.
36+
37+
## Stability API and Other Providers
38+
39+
The Stability API route is opt-in and uses an operator-supplied key. Service
40+
terms, availability, credit use, retention, and content rules are separate
41+
from GERM. Requests can include prompts and source audio, so enable it only
42+
after deciding that transfer is appropriate.
43+
44+
LoRAs and future adapters can have their own licenses and training-data
45+
constraints. GERM's Strain registry records declared identity, strength,
46+
tags, license, and provenance, but it cannot verify that a declaration is
47+
correct.
48+
49+
## Audio and Research Outputs
50+
51+
GERM does not determine ownership of input recordings, prompts, generated
52+
audio, lineage notes, or research exports. Operators are responsible for
53+
consent, provenance, attribution, and the rights required to create, store,
54+
perform, publish, or redistribute them.
55+
56+
Use [CITATION.cff](../CITATION.cff) to cite GERM. Cite the exact model,
57+
checkpoint, provider, and relevant upstream release separately when they
58+
contributed to a result.

0 commit comments

Comments
 (0)