cwervo/aura
A browser that can accept web addresses, DIDs, and Bluesky handles.
{ "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"}Aura Browser Prototype
Section titled “Aura Browser Prototype”This project is a prototype of a web browser with experimental support for decentralized identity through the AT Protocol.
flutter run # to try it outTry it out
Section titled “Try it out”You can run the Aura Browser on multiple platforms. Ensure you have the Flutter SDK installed.
🍏 MacOS
Section titled “🍏 MacOS”To run the native desktop application:
- Enable MacOS desktop support:
flutter config --enable-macos-desktop - Run the app:
flutter run -d macos
To run the browser in your local web browser:
- Run the app:
flutter run -d chromeNote: The ATProto Space view fetches data from public APIs, but some web browsers may have CORS restrictions during local development.
📱 Mobile (iOS & Android)
Section titled “📱 Mobile (iOS & Android)”To test the “native-like” experience on your phone:
- Connect your device via USB or ensure a simulator/emulator is running.
- Run the app:
flutter run - If you have multiple devices, use
flutter run -d <device_id>(find your ID withflutter devices).
Browser Prototype Functionality
Section titled “Browser Prototype Functionality”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)
- Standard URLs (e.g.,
- 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) orCtrl+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.
Roadmap & Upcoming Features
Section titled “Roadmap & Upcoming Features”We are actively working on the following improvements:
🌟 Features
Section titled “🌟 Features”- 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.
🛠 Tech Debt & Infrastructure
Section titled “🛠 Tech Debt & Infrastructure”- Persistence: Save history and favorites to local storage (e.g.,
shared_preferencesorhive). - 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