Diffex is a self-evolving coding agent. It provides a multi-provider LLM API, a general-purpose agent runtime, a terminal UI, remote session protocols, and an extensible coding-agent CLI.
Diffex treats the agent harness as an optimization target. Diffex evolves through observable behavior, diagnostic signals, and evidence-backed improvements.
The archived Rust implementation is available at diffexai/diffex-legacy.
Read more at diffex.ai and in the Diffex white paper.
Diffex builds on the Pi Agent Harness to extend its capabilities.
Use ./diffex-test.sh to run Diffex directly from this repository.
Diffex is released on npm as @diffexai/diffex.
Install it globally and launch the CLI:
npm install -g @diffexai/diffex
diffex| Package | Responsibility |
|---|---|
packages/telemetry |
Vendor-neutral telemetry contracts and typed schemas. |
packages/ai |
Unified LLM API with provider and model discovery. |
packages/agent |
Agent runtime, tool calling, state management, and attachments. |
packages/harness-state |
Immutable, content-addressed harness revisions and global selection. |
packages/protocol |
Transport-neutral CBOR protocol for remote sessions. |
packages/client |
Transport-neutral client for remote sessions. |
packages/server |
Experimental remote session server. |
packages/session-backends/sqlite-node |
SQLite session persistence for Node.js. |
packages/tui |
Terminal UI components with differential rendering. |
packages/coding-agent |
Interactive coding-agent CLI and extension system. |
packages/evals |
Evaluation utilities and scenarios. |
The source repository remains private pending an explicit publication review.
Changing visibility requires an audit of retained Actions logs, artifacts, source snapshots, debug maps, and linked session transcripts.
Artifact names such as private-release-* do not provide access protection.
The approved release channel is the public npm package @diffexai/diffex, which bundles the required runtime workspaces.
Standalone archives, Python, secondary package registries, and interactive CLI containers are deferred.
Public packages include readable JavaScript and declarations, with Apache-2.0 metadata and complete applicable upstream notices.
They exclude source maps, TypeScript examples, and native source build files.
Delivered implementation code remains inspectable; private source hosting and compilation do not guarantee confidentiality.
See the distribution review for exact scope and release prerequisites.
See the source publication review for the separate repository visibility transition.
Diffex requires Node.js 22.19 or newer and npm.
git clone https://github.com/diffexai/diffex.git
cd diffex
npm install --ignore-scripts
npm run build:offline
./diffex-test.shThe source launcher can be run from any directory and preserves the caller's working directory.
npm run check
./test.shnpm run check runs formatting, linting, dependency policy checks, and TypeScript validation.
./test.sh runs the non-E2E test suites without activating tests that require provider credentials.
- Coding-agent documentation
- Containerization and sandboxing
- Contributing
- Code of Conduct
- Project rules
Diffex does not impose a built-in security boundary around filesystem, process, network, or credential access. By default, it runs with the permissions of the user and process that launched it.
Use a container or sandbox when stronger isolation is required. See the containerization guide for supported patterns.
Issues and pull requests are welcome. Read CONTRIBUTING.md for setup, validation, and review expectations. Participation in the project is governed by the Code of Conduct.
Do not commit credentials, secrets, local machine artifacts, build output, or private deployment state. Report sensitive issues privately through the repository maintainers or the contact paths on diffex.ai. See SECURITY.md for reporting guidance and the execution trust boundary.
Diffex contributions are distributed under the Apache License 2.0. Portions derived from Pi remain available under the MIT License, with the upstream copyright and permission notice preserved in the license file.

