Skip to content

Commit ef6a515

Browse files
committed
docs: update README for v0.6.1 — symbiont Agent B, scan, resume, config
1 parent e49e397 commit ef6a515

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

README.md

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# phalus
22

3-
**Private Headless Automated License Uncoupling System** — a self-hosted tool for AI-powered clean room software reimplementation. Feed it a dependency manifest and it runs a two-phase, isolation-enforced LLM pipeline: Agent A reads only public documentation and produces a formal specification, Agent B reads only that specification and implements the package from scratch.
3+
**Private Headless Automated License Uncoupling System** — a self-hosted tool for AI-powered clean room software reimplementation. Feed it a dependency manifest and it runs a two-phase, isolation-enforced LLM pipeline: Agent A reads only public documentation and produces a formal specification, Agent B uses a [symbiont](https://github.com/thirdkeyai/symbiont) reasoning loop to iteratively implement the package from scratch.
44

55
No user accounts. No payments. No SaaS. You run it on your own machine with your own API keys.
66

@@ -22,11 +22,11 @@ Pre-built binaries for Linux (x86_64, aarch64), macOS (Apple Silicon), and Windo
2222

2323
```sh
2424
# Linux (x86_64)
25-
curl -L https://github.com/phalus-sh/phalus/releases/latest/download/phalus-v0.6.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
25+
curl -L https://github.com/phalus-sh/phalus/releases/latest/download/phalus-v0.6.1-x86_64-unknown-linux-gnu.tar.gz | tar xz
2626
sudo mv phalus /usr/local/bin/
2727

2828
# macOS (Apple Silicon)
29-
curl -L https://github.com/phalus-sh/phalus/releases/latest/download/phalus-v0.6.0-aarch64-apple-darwin.tar.gz | tar xz
29+
curl -L https://github.com/phalus-sh/phalus/releases/latest/download/phalus-v0.6.1-aarch64-apple-darwin.tar.gz | tar xz
3030
sudo mv phalus /usr/local/bin/
3131
```
3232

@@ -99,6 +99,35 @@ Re-validate existing output:
9999
phalus validate ./phalus-output --similarity-threshold 0.5
100100
```
101101

102+
Resume a previous run (skip completed packages):
103+
104+
```sh
105+
phalus run package.json --resume
106+
```
107+
108+
## License Scanning
109+
110+
Scan a project's dependencies for license compliance:
111+
112+
```sh
113+
phalus scan ./my-project
114+
```
115+
116+
Output:
117+
```
118+
Scan: ./my-project (42 packages from 1 manifest, 0 SBOMs)
119+
120+
Package Version Ecosystem License Class
121+
lodash 4.17.21 npm MIT permissive
122+
express 4.18.2 npm MIT permissive
123+
serde 1.0.197 crates MIT OR Apache-2.0 permissive
124+
numpy 2.2.6 pypi BSD-3-Clause permissive
125+
126+
Summary: 38 permissive, 3 copyleft-weak, 1 copyleft-strong
127+
```
128+
129+
Supports npm, PyPI, crates.io, and Go registries. Handles CycloneDX and SPDX SBOM formats. Compound licenses (`MIT OR Apache-2.0`, `Apache-2.0 AND ISC`) are classified by their most relevant component.
130+
102131
## Supported Ecosystems
103132

104133
| Ecosystem | Manifest | Registry |
@@ -117,7 +146,7 @@ Manifest → Registry Resolver → Doc Fetcher → Agent A (Analyzer)
117146

118147
1. **Agent A** reads only public documentation (README, API docs, type definitions) and produces a Clean Room Specification Pack (CSP) — 10 documents describing what the package does, never how.
119148
2. The **Isolation Firewall** enforces separation: Agent B never sees the original documentation or source code. Only the CSP crosses the boundary, logged with SHA-256 checksums.
120-
3. **Agent B** reads only the CSP and implements the package from scratch under your chosen license.
149+
3. **Agent B** uses a [symbiont](https://github.com/thirdkeyai/symbiont) ORGA reasoning loop (Observe-Reason-Gate-Act) to iteratively implement the package. It writes files, checks API surface completeness, resolves missing imports, and repeats until the implementation is complete.
121150
4. The **Validator** checks syntax, runs tests, scores similarity against the original, and flags anything above threshold.
122151

123152
Every step is recorded in an append-only audit trail.
@@ -136,11 +165,13 @@ agent_b_provider = "anthropic"
136165
agent_b_model = "claude-sonnet-4-6"
137166
agent_b_api_key = ""
138167
agent_b_base_url = ""
168+
agent_a_max_tokens = 16384 # max output tokens for Agent A
169+
agent_b_max_tokens = 65536 # max output tokens for Agent B
139170

140171
[llm.retry]
141172
max_retries = 3
142173
initial_backoff_ms = 500
143-
timeout_secs = 120
174+
timeout_secs = 600
144175

145176
[isolation]
146177
mode = "context" # context | process | container

0 commit comments

Comments
 (0)