Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8af33c8
feat: add direct browser public file client
mickvandijke Aug 3, 2026
be0e5f5
feat(web): consume self-contained node multiaddresses
mickvandijke Aug 5, 2026
a6c4c5a
feat(web): upload paid public files
mickvandijke Aug 5, 2026
716bf7e
feat(web): move file processing to Rust WASM
mickvandijke Aug 5, 2026
ca21f0d
feat(web): use shared Rust DHT lookup runner
mickvandijke Aug 5, 2026
b01971e
feat(web): use Saorsa WebRTC Direct transport
mickvandijke Aug 26, 2026
d10567d
refactor browser client into Rust WASM
mickvandijke Aug 26, 2026
1e23045
feat(web): share protocol logic and automate browser smoke test
mickvandijke Aug 26, 2026
e89f561
feat(web): support large nested DataMap files
mickvandijke Aug 26, 2026
b42fa6c
feat(web): stream files through reusable WebRTC sessions
mickvandijke Aug 27, 2026
f2c039e
refactor(client): share browser and native transfer policy
mickvandijke Aug 31, 2026
e7db6b8
feat(browser): share native upload scheduling
mickvandijke Aug 31, 2026
39417b7
fix(browser): harden WebRTC upload retries
mickvandijke Aug 31, 2026
18b0886
fix(browser): use wasm-compatible endpoint clock
mickvandijke Aug 31, 2026
b3ac2fb
fix(web): retain wallet key after uploads
mickvandijke Aug 31, 2026
aaf38c7
fix(web): clarify already-stored upload status
mickvandijke Aug 31, 2026
47cf02a
feat(web): stream large file uploads
mickvandijke Sep 1, 2026
1c42b44
fix(web): include video stream service worker
mickvandijke Sep 1, 2026
c2d356b
feat(browser): resolve public files by address
mickvandijke Sep 1, 2026
f48aa5d
chore(deps): pin browser support draft stack
mickvandijke Sep 1, 2026
eeabc0d
feat(browser): encrypt WebRTC RPC sessions
mickvandijke Sep 1, 2026
df95db7
feat(browser): dial WebRTC Direct without SDP mutation
mickvandijke Sep 2, 2026
189d351
refactor(browser): move web app integration to SDK
mickvandijke Sep 3, 2026
c3bf046
chore(deps): pin WebRTC reachability fix
mickvandijke Sep 3, 2026
113fa8e
refactor(browser): consume shared WebRTC wire contract
mickvandijke Sep 3, 2026
ed03047
fix(browser): notify only waiting pool clients
mickvandijke Sep 3, 2026
3153336
chore(deps): pin shared WebRTC wire contract
mickvandijke Sep 3, 2026
6d199ab
fix(browser): coalesce pool wake notifications
mickvandijke Sep 4, 2026
eb7109f
test(browser): expect canonical endpoint addresses
mickvandijke Sep 4, 2026
3f2b8ee
refactor(browser): consume Saorsa WebRTC profile
mickvandijke Sep 4, 2026
2b7e4ac
refactor(browser): decouple WASM from ant-protocol changes
mickvandijke Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,49 @@ jobs:
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets --all-features -- -D warnings

browser-wasm:
name: Browser WASM
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Check the portable Rust library
run: >-
cargo check -p ant-core
--target wasm32-unknown-unknown
--no-default-features
--features browser-wasm
- name: Lint the portable Rust library
run: >-
cargo clippy -p ant-core
--target wasm32-unknown-unknown
--no-default-features
--features browser-wasm
-- -D warnings
- name: Install wasm-pack
run: cargo install wasm-pack --version 0.15.0 --locked
- name: Generate the browser bindings
working-directory: ant-core
run: >-
wasm-pack build
--target web
--out-dir wasm-tests/pkg
--release
.
--no-default-features
--features browser-wasm
- name: Test the generated browser bindings
working-directory: ant-core
run: >-
node --import ./wasm-tests/setup-wasm.mjs
--test ./wasm-tests/*.test.mjs

test-unit:
name: Unit Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/target
/ant-core/wasm-tests/pkg/
.cargo/config.toml
.claude/plans/
.claude/scheduled_tasks.lock
Expand Down
99 changes: 93 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[workspace]
members = ["ant-core", "ant-cli"]
resolver = "2"

[patch.crates-io]
saorsa-core = { git = "https://github.com/WithAutonomi/saorsa-core.git", rev = "1432fa9751d46887dc86767928bd3320a24c6367" }
saorsa-transport = { git = "https://github.com/WithAutonomi/saorsa-transport.git", rev = "2c6e23cd6cd4db79f475676e25af9334a044a343" }
20 changes: 18 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,29 @@ A unified CLI and Rust library for storing data on the Autonomi decentralized ne

## Overview

This project provides two crates:
This project provides two Rust crates:

- **ant-core** — A headless Rust library containing all business logic: data storage/retrieval with self-encryption and EVM payments, node lifecycle management, and local devnet tooling. Designed to be consumed by any frontend (CLI, GUI, AI agents, REST clients).
- **ant-core** — A headless Rust library containing the Autonomi business logic: data storage/retrieval with self-encryption and EVM payments, node lifecycle management, and local devnet tooling. Its `browser` module shares manifest validation, protocol framing, authenticated WebRTC Direct access, lookup, quote verification, and complete public-file workflows with browser applications through the `browser-wasm` feature.
- **ant-cli** — A thin CLI binary (`ant`) built on `ant-core`.

Data on Autonomi is **content-addressed**. Files are split into encrypted chunks (via [self-encryption](https://en.wikipedia.org/wiki/Convergent_encryption)), each stored at an XOR address derived from its content. A `DataMap` tracks which chunks belong to a file. Payments for storage are made on an EVM-compatible blockchain (Arbitrum).

### Browser WebAssembly client

Build `ant-core` for browsers without changing native callers:

```bash
wasm-pack build --target web ant-core \
--no-default-features --features browser-wasm
```

This produces the low-level `wasm-bindgen` API backed by the shared Rust
implementation. The companion
[`ant-client-browser-sdk`](https://github.com/WithAutonomi/ant-client-browser-sdk)
project owns the TypeScript API, wallet adapters, browser storage and worker
integration, media streaming bridge, runnable examples, and browser end-to-end
tests.

## Installation

### Linux / macOS
Expand Down
Loading