Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

cwervo/aura

A browser that can accept web addresses, DIDs, and Bluesky handles.

cwervo/aura.json
{
"createdAt": "2025-09-02T04:19:49Z",
"defaultBranch": "main",
"description": "A browser that can accept web addresses, DIDs, and Bluesky handles.",
"fullName": "cwervo/aura",
"homepage": "https://cwervo.github.io/aura/",
"language": "Dart",
"name": "aura",
"pushedAt": "2026-03-26T21:18:36Z",
"stargazersCount": 5,
"topics": [],
"updatedAt": "2026-03-26T21:18:41Z",
"url": "https://github.com/cwervo/aura"
}

This project is a prototype of a web browser with experimental support for decentralized identity through the AT Protocol.

Terminal window
flutter run # to try it out

You can run the Aura Browser on multiple platforms. Ensure you have the Flutter SDK installed.

To run the native desktop application:

  1. Enable MacOS desktop support: flutter config --enable-macos-desktop
  2. Run the app: flutter run -d macos

To run the browser in your local web browser:

  1. Run the app: flutter run -d chrome Note: The ATProto Space view fetches data from public APIs, but some web browsers may have CORS restrictions during local development.

To test the “native-like” experience on your phone:

  1. Connect your device via USB or ensure a simulator/emulator is running.
  2. Run the app: flutter run
  3. If you have multiple devices, use flutter run -d <device_id> (find your ID with flutter devices).

The Aura Browser has the following features:

  • Hybrid View: Can render standard web pages using a webview, or a native-like “ATProto Space” view for decentralized identity content.
  • Advanced OmniBar: The address bar can handle:
    • Standard URLs (e.g., https://example.com)
    • AT Protocol handles (e.g., @alice.bsky.social)
    • AT Protocol DIDs (e.g., did:plc:..)
    • Bluesky profile URLs (e.g., https://bsky.app/profile/alice.bsky.social)
  • ATProto Space View: When you navigate to an AT Protocol identifier, the browser renders a custom view that displays the user’s profile and a feed of their recent posts, fetched directly from the Bluesky public API.
  • did:web Fallback: If a did:web: profile is not found on the AT Protocol, the browser automatically falls back to displaying the corresponding website.
  • Favorites Bar with Tooltips: The favorites bar provides quick access to a few sample locations. Hover over them to see a tooltip describing the link type.
  • Keyboard Shortcuts: Press Cmd+L (on macOS) or Ctrl+L (on other platforms) to quickly focus the address bar.
  • Search Engine Integration: If a user enters a search query instead of a URL or ATProto handle, the browser defaults to searching via DuckDuckGo.
  • State Management with Riverpod: The browser uses Riverpod for robust, testable state management across the application.

We are actively working on the following improvements:

  • Post Interactions: Like, repost, and reply to ATProto posts directly from the Space view.
  • Thread View: Tap on a post to view the full conversation thread.
  • Tabbed Browsing: Support for multiple open tabs.
  • Unified History: A browsing history that includes both web pages and ATProto Spaces.
  • Bookmarks/Favorites: Allow users to save their favorite sites and profiles.
  • Authentication: Sign in with your ATProto account for personalized feeds and interactions.
  • Persistence: Save history and favorites to local storage (e.g., shared_preferences or hive).
  • Caching: Implement a local cache for resolved DIDs and profile data to improve performance.
  • Enhanced Testing: Expand widget and unit tests to cover all edge cases in the navigation logic.
  • State Management Refinement: Continue moving any remaining local state to Riverpod providers.

Looking for code for parsing URLS + DIDs + Bluesky handles?

Section titled “Looking for code for parsing URLS + DIDs + Bluesky handles?”

Take a look at this from the web prototype on the docs branch