The fork shipped renamed binary/bundle but the product name "Zed" was still
shown everywhere in the UI. Rename the display name to "Joule" (tagline
"Energy-metered agentic coding") while preserving every load-bearing reference.
Display renames (105 .rs files): release_channel display_name, welcome +
onboarding + ai_onboarding, macOS app menu (About/Hide/Quit), window titles,
About panel, settings UI, notifications, update/collab messages, system specs.
Bundle display name (crates/zed/Cargo.toml) -> "Joule" so CFBundleName / the
menu-bar name and the .app are "Joule" (identifier science.transaction.AgentJoule
and the agent-joule binary are unchanged).
Docs (223 .md): product prose Zed -> Joule, fence-aware (code blocks untouched).
Embedded assets (12 JSONC): // comments only.
Legal (4 files): product -> Joule, entity "Zed Industries, Inc." -> "Transaction
Science, Inc.", domain zed.dev -> openie.dev. NOTE: these are structurally Zed's
inherited terms and need a real legal review, not just a rename.
Deliberately PRESERVED (renaming would break the app): font aliases ("Zed Plex
Sans"/".ZedMono" in text_system + assets), HTTP header names (X-Zed-Predict-*),
zed:: action ids, app/bundle identifiers (dev.zed.Zed*, Zed-Editor-* product ids),
zed.dev URLs, ZED_* env vars, crate/package names, "Zed Industries" in non-legal
attribution, and the {zed,Zed} config-dir glob.
Signed + notarized + stapled as Joule.app, installed to /Applications, verified
(Gatekeeper: Notarized Developer ID, FH93XC2VRR). Caveat: test-code string
literals were renamed too, so some `cargo test` assertions may need updating.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
36 lines
4 KiB
Markdown
36 lines
4 KiB
Markdown
# agent-joule — Joule Code reference consumer
|
|
|
|
agent-joule is the reference editor for **[Joule Code](https://github.com/transaction-science/open-standards/tree/main/joule-code)**, the Transaction Science open standard for energy-attributed, federated, no-phone-home agentic coding. It is a hard fork of the [Zed](https://zed.dev) editor, stripped of its cloud ties and rebuilt around the Joule Code commitments: drive vendors' own logged-in coding agents over ACP, meter every turn in joules, and never phone home.
|
|
|
|
It is not a paid coding tool with a token markup. The protocol is owned by no one; agent-joule is one (SOTA) implementation of it.
|
|
|
|
## What it does
|
|
|
|
- **Federates frontier coding agents.** Connect Claude Code, Gemini, or Codex from one panel. agent-joule launches the vendor's own logged-in CLI over the Agent Client Protocol (ACP) — the vendor's client owns its credential; agent-joule never sees or transports a token. These agents are the Joule Code cascade's **L4 (Wire)** tier.
|
|
- **Meters energy.** Every session surfaces a real `joule-code-receipt::Receipt`: `⚡ N J this session (est.) · L4`. The number is computed from the agent's actual reported token usage; the `est.` is honest — it is an `Estimator` reading because no hardware energy interface is in the path yet (Joule Code SPEC §6). When a metered backend is present, the same surface shows a `measured` figure.
|
|
- **Does not phone home.** Sign-in, telemetry, crash upload, and auto-update are removed; a build-level egress backstop makes Joule-host URLs unreachable; the ACP-registry auto-fetch is off. Startup is network-silent — verified by packet capture. See [`PRIVACY_HARDENING.md`](PRIVACY_HARDENING.md).
|
|
|
|
## Joule Code conformance
|
|
|
|
agent-joule implements the Joule Code v0.1 commitments it is positioned to carry — the **no-capture** posture (verified) and a **live receipt** surface — and binds the federation legs as the cascade's L4 tier. The full clause-by-clause map (what is implemented, partial, and pending) is in [`JOULE_CODE.md`](JOULE_CODE.md). The standard's lean reference library (`joule-code-rs`) and conformance suite live in the [open-standards](https://github.com/transaction-science/open-standards/tree/main/joule-code) repository; agent-joule consumes it as a dependency rather than vendoring a copy.
|
|
|
|
## Build and run
|
|
|
|
```bash
|
|
cargo build --bin agent-joule
|
|
./target/debug/agent-joule
|
|
```
|
|
|
|
Open the federation panel with `ctrl-cmd-a`. Connecting an agent requires that vendor's CLI to be installed and logged in (e.g. `claude`, `gemini`); registry agents are fetched via `npx` on first connect. A local OpenAI-compatible model (e.g. vLLM at `localhost:8000`) is registered as a direct provider — the cascade's L3 (local model) tier.
|
|
|
|
For building on each platform, the upstream Joule development guides still apply: [macOS](./docs/src/development/macos.md), [Linux](./docs/src/development/linux.md), [Windows](./docs/src/development/windows.md).
|
|
|
|
## Licence
|
|
|
|
agent-joule inherits Joule's **GPL-3.0-or-later** licence ([`LICENSE-GPL`](LICENSE-GPL); portions Apache-2.0, [`LICENSE-APACHE`](LICENSE-APACHE)). The Joule Code standard it consumes is separately and permissively licensed (Apache-2.0 reference code, CC-BY-4.0 spec text); a GPL reference editor consuming a permissive standard is intentional.
|
|
|
|
License information for third-party dependencies must be correctly provided for CI to pass; agent-joule retains Joule's `cargo-about` setup under `script/licenses/`.
|
|
|
|
## Upstream
|
|
|
|
agent-joule is a hard fork of [zed-industries/zed](https://github.com/zed-industries/zed), a high-performance, multiplayer code editor from the creators of [Atom](https://github.com/atom/atom) and [Tree-sitter](https://github.com/tree-sitter/tree-sitter), developed by Zed Industries, Inc. All credit for the editor foundation is theirs. agent-joule diverges in one direction: removing the cloud dependencies and building the Joule Code substrate in their place. Upstream documentation, contribution guidance, and community links live at [zed.dev](https://zed.dev) and the upstream repository.
|