A standards-based browser
Pages render in the system web view: WebKit on Linux, WKWebView on Apple platforms, WebView2 on Windows, and Android WebView. The browser is one component of the app, not the whole app.
Early development
The browser is one part of the app, next to local AI, projects, notes, and a peer-to-peer web.
Morph is built so your data stays yours, and nothing leaks.
Morph is a private, decentralized browser with local AI built in. It is a research assistant, a rubber duck, and a journaler: a place for both short-term and long-term work on the web.
The desktop shell is a host for swappable components. Browsing is one of those components, sitting next to chat, notes, projects, and the people you are connected to.
It is standards-based, with pages rendered in the system web view on every platform. A Rust core owns your identity, data, networking, and AI. The UI only draws the screen and handles input.
These are the parts Morph is designed around. Some are already in progress; others are planned in the project priorities.
Pages render in the system web view: WebKit on Linux, WKWebView on Apple platforms, WebView2 on Windows, and Android WebView. The browser is one component of the app, not the whole app.
Local models are on by default, with one switch to turn them off. Morph starts as a chat partner and rubber duck. Later it becomes a Student that can learn from the browsing you opt into, and a Researcher that keeps research journals across the web, your peers, and your chats.
Projects include templates, notes, a code editor, and code spaces — groups of repos and folders. They are Rust first. A project can be private (the default) or public, and gated or open. Public projects can be served over ordinary HTTPS at your own dynamic DNS name.
You get one key identity, shared with Muninn. Peer sites live at weirdnet-morph://. Relays help reach devices that DNS cannot, and Grindvakt dynamic DNS can tie a domain name to your browser.
Write notes and a journal, and talk with the people you are connected to. Forums stay Morph-only.
Components can be themed and swapped to fit how you work. A later drag-and-drop layout mode will let you place components and choose what is shown by default.
Extensions are downloaded and installed only with your permission, signed by the author's key. Each one runs in its own sandboxed process. The first SDK is Rust; other compiled languages can use the same gRPC contract.
Updates come through Salty Gull. They are signed, and they are never forced: you opt in to each update, or opt in to all of them.
A Rust 2024 core owns identity, data, networking, and AI. The shells draw the screen and route input; they do not hold keys or business logic. Anything both shells need lives in a Morph crate that can be tested without a display.
On the desktop, the shell is written in Rust with GPUI, Zed's UI framework. Linux comes first; macOS and Windows on GPUI are planned. On mobile, the shell stays Flutter, on Android, iOS, and F-Droid. Both shells sit on the same Rust crates. Pages use the system web view on every platform.
Morph is in early development. Phase 1 of the GPUI desktop shell is in progress, with Linux first.
The morph and morph-bin packages are coming with the first build. They will be published on
the WeirdBrains TAUR server. Until that build is ready, install from source using the steps in the repository README.
Clone the repository and follow the README for current build steps. The GPUI desktop work is happening on
main. You will need Rust 1.99 or newer. Flutter 3.50 (Dart 3.14) is required for the mobile app, and for the current Flutter shell on
main until the GPUI shell lands.
git clone https://github.com/WeirdBrains/morph.git
cd morph
On Arch, the GPUI desktop shell will need these system libraries:
sudo pacman -S --needed webkit2gtk-4.1 gtk3 libxkbcommon-x11 vulkan-icd-loader
Once the desktop crate is in the tree, the intended command is:
cargo run -p morph-desktop --release
Until then, the README covers building the existing Flutter app in app/.