Rewild Your Web
Rust 52.5%
JavaScript 26.5%
CSS 14.7%
HTML 3.8%
Shell 0.3%
Python 0.1%
Other 2.0%
123 2 0

Clone this repository

https://tangled.org/me.webbeef.org/beaver https://tangled.org/did:plc:f25qr3njhaoeolu46vylylju/beaver
git@tangled.org:me.webbeef.org/beaver git@tangled.org:did:plc:f25qr3njhaoeolu46vylylju/beaver

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
readme.md

A friendly beaver

What / why / how#

The Web is our only hope for a platform that provides permissionless user agency. This project is about scratching that itch, building a Web based user agent that can play new tricks.

Our mascot is a beaver because they are fantastic animals that heal their environment; read https://www.noemamag.com/we-need-to-rewild-the-internet/ for a good introduction, and come with us rewild your web!

We build on Servo because despite a new wave of browsers being built, they mostly go with forking blink, and that's not how we will diversify the Web. Also this is a very fun project to contribute to!

The end goal is to have a suite of Web user agents. Running on top of an existing OS is a temporary stop-gap, because being a second class citizen on someone else's platform is a dead end. We will create new personal computing environments for mobile, desktop, media players, etc. We have a long road ahead, but we're not in a hurry.

We hang out on Servo's zulip if you want to chat about the project.

Building#

Prerequisites#

Desktop builds#

  • Update with forkme apply
  • Build with cargo build -r -p beaver-shell
  • Run with cargo run -r -p beaver-shell or directly from the target directory as usual for Rust projects.

The current UI allows multiple windows, and each one is a simple tiling window manager. There is also a floating search window.

Overview of 3 pages in tiling arrangement

Main menu and 2 pages in vertical stacking

Scrolling in the tiling WM, and the context menu

The settings app, with a few themes

The floating search window

Mobile builds (cross-compilation from macOS/Linux)#

The target platform is aarch64 Linux devices such as the Pixel 3a running Mobian (see https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a).

A rewilding Pixel 3a

Prerequisites#

  • Docker Desktop (with at least 24GB memory allocated in Settings > Resources)

Building#

Cross-compilation uses a Docker container with an ARM64 toolchain and all native dependencies. The source tree is bind-mounted so no separate clone is needed.

# First build creates the Docker image, then compiles (takes a while):
./build-arm64.sh release

# Subsequent builds are incremental:
./build-arm64.sh release

# Production build with LTO:
./build-arm64.sh production

The binary is output to dist/beavershell.

You can adjust parallelism if needed: CARGO_BUILD_JOBS=2 ./build-arm64.sh release

Deploying to device#

The deploy script rsyncs the binary, resources, and UI to a remote device over SSH:

./deploy-arm64.sh

This expects key-based SSH access to mobian@mobian. Then run on device:

SURFMAN_FORCE_GLES=1 WAYLAND_DISPLAY=wayland-0 ./beaver/beavershell

Here's what this looks like

Simple homescreen

Searching

The radial context menu

Editing the current page URL