Android App with Local Nodes
This guide explains how to run the full Interstellar stack locally using Docker or Podman. You will be able to launch the Substrate node, Integritee TEE worker, and IPFS service, then interact with the system using the Interstellar Android demo app.
This setup enables full offline testing without relying on a hosted VPS.
Milestone 5 delivers the Wallet Connect integration whithin the Interstellar android wallet app tied to Interstelar infrastructure.
All features have been extensively tested with a focus on user experience, demonstrating how simple, reliable, and intuitive these flows can be. The current interface has been adjusted to support efficient testing, while leaving room for further UX and UI refinements in the production-grade SDK.
Although the system is not yet production-ready, it provides a robust foundation. Broader edge case coverage, interoperability, and resilience guarantees will be the focus of the upcoming SDK and future milestones. Reviewers are encouraged to focus on the functional flow and experience of the key features in this milestone.
This compatibility note applies to the backend stack, tested on Ubuntu 24.04 LTS (x86_64) using Docker (docker-compose) or Podman (with manually installed podman-compose*).
The stack is expected to work on other recent Linux distributions, but this has not been officially verified.
Known issue: May fail on Apple Silicon (M1/M2/M3/M4) - due to current SIMD usage and QEMU/Rosetta limitations - crash on M1/M2 (not tested on M3/M4)
The frontend (e.g., Android emulator or physical device) can run on any OS supported by Android Studio (expect some emulator limitations on Apple Silicon)
*Compose tools are required to manage service startup dependencies (e.g., health checks).
1. Prerequisitesβ
| Requirement | Install Guide |
|---|---|
| Docker | Install Docker |
| Docker Compose | Install docker-compose |
curl, wget, jq | Installed via apt/brew or default in most environments |
| Android Studio | Install Android Studio |
ADB (adb reverse) | Comes with Android Studio |
You may also use Podman as an alternative to Docker.
2. Launch the Interstellar Stack Installβ
The BTC worker connects to a Bitcoin Testnet RPC endpoint using a hosted provider.
For simplicity, we provide curators with a ready-to-use .env file.
Place the file in the same directory as docker-compose.yml.
It contains a single variable:
BITCOIN_TESTNET_API_KEY=<API_KEY_WE_SEND>
β οΈ If you prefer to use your own provider, simply replace the value of BITCOIN_TESTNET_API_KEY in .env.
# Step 1: Create a working directory
mkdir interstellar_m4_demo && cd interstellar_m4_demo
# Step 2: Download the stack config
curl -L -o docker-compose.yml https://raw.githubusercontent.com/Interstellar-Network/containers/refs/tags/testnet-m4/docker-compose.yml
curl -L -o docker-ipfs-init.sh https://raw.githubusercontent.com/Interstellar-Network/containers/refs/tags/testnet-m4/docker-ipfs-init.sh
chmod +x docker-ipfs-init.sh
# Step 3: Place the .env file we send in this directory
specific for M4 delivery - previous .env should not be reused
# Step 4: Start Docker (if needed)
sudo service docker start # (for most Linux distros)
# Step 5: Launch the stack
sudo docker compose down --timeout 1 && sudo docker compose up --force-recreate
β³ Waiting for Master Circuit Generationβ
Once the node and service are running, the system will automatically trigger the generation of master circuits from the hardware description files.
These circuits are compiled using the Verilog logic generated from the original master circuits specifications, processed through the logic synthesis pipeline. This step may take several minutes depending on the environment.
During this time, monitor the logs and wait for the following sequence of messages:
[ocw-circuits] callback_new_skcd_signed sent number : <number> 1-Success - 0-Fail
[ocw-circuits] callback_new_display_circuits_package_signed: (<CID_1>, <message_digits_number>), (<CID_2>, <pinpad_digits_number>) for <account_id>
Shortly before these messages, you will also see large blob uploads to IPFS such as:
Requested started id=<...> method=POST uri=http://ipfs:5001/api/v0/add
These blobs correspond to the master visual circuits (SKCD display circuits), which are the result of the hardware synthesis pipeline. Their appearance in the logs is a strong indicator that the build process has completed.
βΉοΈ You can identify this moment easily by spotting two large IPFS file hashes being logged together β one for the secure keypad circuit and one for the display message circuit i.e one time code These hashes will later be used for visual challenge rendering and validation.
Detailed example from integritee_node-1
Requested started id=1059 method=POST uri=http://ipfs:5001/api/v0/add
[fetch_from_remote_grpc_web] content_type: application/json
[ocw-circuits] callback_new_skcd_signed sent number : 1
[ocw-circuits] callback_new_display_circuits_package_signed: ("QmUx8mMo8GgGdUhcgFQVg2sexkVfyq1sViruZiBadUfs4d",2),("QmcwXyZNmLXnjeoA25YSzj41G1sr6ZsHgZZBQVWvcfe1qn",10) for d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
[ocw-circuits] Hello from pallet-ocw-circuits.
π Idle (0 peers), best: #6 (...), finalized #3 (...), β¬ 0 β¬ 0
You can also verify the runtime is ready using Polkadot.js
While waiting for the stack to fully initialize, you can explore the architecture and rationale behind
the VCA System Layer. This layer is responsible for producing the VCA Token,
the core cryptographic artifact used by the Trusted Action Validation Protocol (TAVP).
The token is generated through a hardware-secure pipeline starting from VHDL logic descriptions, synthesized into
Verilog and compiled using theYosis and abc logic synthesis toolchain. The resulting master circuits define both the secure display and interaction logic β including the Secure Circuit Descriptor (scd) and its runtime variant, skcd, used for verifiable evaluation.
Once built, these circuits are uploaded to IPFS and used to enable real-time, privacy-preserving visual cryptographic challenges, ensuring each critical user interaction is verifiable and resistant to malware, phishing, and adversarial AI.
3. Install the Android Demo Appβ
Download the APKβ
From the official Interstellar GitHub Release (specific APKs preconfigured to connect to localhost):
androidApp-arm64-release.apkβ for Android devices and Apple Silicon(M1/M2/M3/M4)androidApp-x86_64-release.apkβ for Android emulators running on x86_64 platforms (e.g., Windows PCs, Intel-based Mac)
Latest version recommended
While the app runs on Apple Silicon (M1βM4), emulator performance may vary due to ARM virtualization and GPU constraints. For accurate testingβespecially for Rust-based rendering and cryptographic logicβchoose the best available setup:
| Recommended Option | Notes |
|---|---|
| Mid-to-high-end ARM device | Preferred. e.g., Pixel 5βPixel 8. Avoid Android 16 (API 36) for now. |
| x86_64 emulator (Intel) | Reliable with mid-range or better GPU. |
| Apple Silicon (M3/M4) emulator | Acceptable if GPU is sufficient. Better than M1/M2 for rendering. |
| Apple Silicon (M1/M2) emulator | Works, but may show degraded performance or rendering issues. |
If you already have an older version of the Interstellar Android app installed, you must uninstall it before installing the M3 build.
The app uses local secure storage and cached configuration; keeping a previous version may lead to inconsistent behavior during transaction signing or validation.
Option 1: Physical Deviceβ
- Transfer the APK to your phone or download it directly from the device
- Allow app installation from external sources
- Install the APK
- Connect your devices to Android Studio
Ensure that your device is configured for english language
Option 2: Emulatorβ
- Create a
Pixel 7or equivalent emulatorAPI 31+-API 35 - Edit the emulator and select an API 31+ below the default API 36 (API 34 more stable)
- Launch the emulator
- Drag and drop the APK onto the emulator window to install
Our app currently crashes on Android API 36. The issue is not caused by the new 16KB memory page model, as it runs correctly on API 35 with 16KB pages. API 36 is a very recent release and may introduce subtle runtime or platform-level changes that affect low-level Rust code (e.g., garbled circuit evaluator or frame renderer). Until further investigation, we recommend using API 34 (more stable on emulator) or earlier for testing.
On Apple Silicon (M1βM4), emulators may fail to render or execute low-level native code correctly unless software rendering is enabled.
To enable it:
Device Manager β Edit β Advanced Settings β Emulated Performance β Graphics β Software

- Mandatory for M1/M2: hardware acceleration is not supported and cause crashes.
- Not tested on M3/M4: may support hardware acceleration, but software mode is safer for compatibility.
Enabling this setting ensures more reliable emulator behavior, especially for native Rust or cryptographic rendering, at the cost of some performance.
2. Link App to your local Interstellar stack:β
The Android app is preconfigured to connect to localhost
To allow the Android app to connect to your local blockchain and IPFS stack:
Step 1: adb reverse Setupβ
On the Desktop connected to the Device or running the Emulator (Windows, Mac OS, Linux)
If Android Studio is already installed, you can enable adb in your terminal by adding it to your PATH with the following command (adjust the path if needed):
Add adb PATH:
Linux:
export PATH=$PATH:$HOME/Android/Sdk/platform-tools
Mac OS:
export PATH="$HOME/Library/Android/sdk/platform-tools:$PATH"
Windows powershell:
$env:Path += ";$env:LOCALAPPDATA\Android\Sdk\platform-tools"
adb reverse tcp:9944 tcp:9944 # Substrate WS
adb reverse tcp:2090 tcp:2090 # Integritee node port
adb reverse tcp:5001 tcp:5001 # IPFS
Make sure adb is properly configured and the emulator or device is detected
with adb devices
You can also check the reverse setup with adb reverse --list
This works for both emulators and real devices connected via USB
Step 2 (optional): ssh Port Forwardingβ
On the System or VM running the Blockchain stack (WSL2, Remote VM)
If the emulator is running (or the device is connected) on a different network interface than the backend (e.g., the backend runs in WSL2 and the Android emulator or device is connected via USB to Windows), you may need to configure port forwarding between the desktop and the blockchain.
WSL2 -> Windows example:
export WSL_HOST_IP=$(ip route | awk '/default/ {print $3}')
ssh -N -R 9944:localhost:9944 -R 5001:localhost:5001 -R 2090:localhost:2090 [windows_user_name]@$WSL_HOST_IP
To avoid issues with ssh or adb reverse during this local test, you can temporarily disable the Firewall:
Example on Windows with PowerShell (as Administrator):
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled False
You can re-enable it later with:
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
During Milestone 5, our primary objective is to demonstrate the interoperability of some of core Interstelar's smart account features with Wallet Connect protocol and its core features. Validate the connection to different Dapp through through QR code URI, as well as the signing and execution of transactions generated by the Dapps across differents chains.
At this stage, the focus is on ensuring correctness and robustness of the transaction pipeline at the infrastructure level. User-facing aspects such as application UI/UX, visual polish, or cosmetic design are not yet part of the milestone scope. Especially because our focus is the delivery of a mobile SDK.
In addition, while the backend successfully submits transactions, we have not yet integrated state tracking from the backend (e.g., monitoring transaction inclusion and confirmation events). This will be addressed in subsequent milestones, once the foundational backend logic is fully validated.
WalletConnect β Tutorialβ
This guide explains how to:
- connect the wallet app to a Dapp through WalletConnect,
- verify that balances are fetched correctly after connection,
- test Solana Devnet transaction signing,
- observe when PoHI / VCA is triggered through the Action Confirmation Screen.
Scope of this tutorialβ
For the current M5 delivery, the Reown test Dapp is used as a practical simulator for WalletConnect flows.
The currently validated test scope is:
- Solana Devnet: connection + transaction signing + transaction approval through VCA / Action Confirmation Screen.
- Ethereum Sepolia: connection + transaction signing without approval flow in the Reown test page currently used.
- Bitcoin: connection can be tested, but transaction execution is not covered in this tutorial because the Reown test Dapp uses Bitcoin Testnet3, while the wallet currently uses Bitcoin Testnet4.
For milestone validation, the reference end-to-end flow is Solana Devnet, because it is the only flow in the current Reown lab setup that allows testing both:
- WalletConnect session establishment, and
- transaction approval through the Interstellar PoHI / VCA flow.
Prerequisitesβ
Before starting, make sure:
- the wallet app is installed and running,
- the WalletConnect integration build for M5 is used,
- internet access is available,
- you have access to the Reown test Dapp: https://lab.reown.com/
For the transaction test on Solana Devnet, you will also need:
- a wallet account already created in the app,
- Devnet SOL in that account.
1 β Connect to a Dappβ
Reown provides a public Dapp simulator that is convenient for testing WalletConnect integration.
Open:
Step 1.1 β Configure the Connect Wallet buttonβ
On the Reown page:
- Select Multichain
- Open the network selector
- Choose Solana Devnet




Step 1.2 β Get the WalletConnect URIβ
Once the button is configured for Solana Devnet:
- click the Solana connect button,
- choose the WalletConnect QR / link option,
- copy the WalletConnect URI.


Step 1.3 β Paste the URI in the wallet app and connectβ
In the wallet app:
- go to the Send screen,
- click on the blank space on top of
CONNECT TO DAPPbutton, - paste the WalletConnect URI,
- click CONNECT TO DAPP.



CONNECT.. button
Expected resultβ
The Dapp session is established and the wallet refreshes account data. In the current implementation, the wallet fetches balances for the supported chains linked to the account view.
After the WalletConnect session is established, the wallet may initially display a zero balance for Solana if the account has not yet been funded. This is expected and can be confirmed in logs.
2 β Dapp transaction signing and approvalβ
2.1 β Fund the Solana Devnet accountβ
To test transaction approval, first fund the Solana Devnet account.
You can use the existing guide here:
Once the wallet receives funds, the displayed balance changes accordingly.


In the captured validation example for this tutorial, the account is funded with 0.5 SOL on Solana Devnet.
2.2 β Test transaction approval and signing on Solana Devnetβ
At the moment, the Solana flow exposed by the Reown lab is the one that allows testing the approval flow through Interstellarβs VCA / Action Confirmation Screen.
Go to the SIGN AND SEND TRANSACTION section in the Solana test Dapp.


Threshold behaviorβ
For this test environment, a conditional validation threshold is configured.
- a transaction below the threshold can be signed without VCA,
- a transaction above the threshold triggers:
- transaction preparation,
- secure message generation,
- VCA challenge generation,
- Action Confirmation Screen,
- final confirmation before broadcast.
Use an amount greater than 0.025 SOL to trigger the VCA / approval flow. Conditional Transaction Validation Threshold
:::
Example validated flowβ
The logs included below correspond to a successful Solana Devnet transfer with:
- funded account balance: 0.5 SOL
- transfer amount: 0.4 SOL
- fee type: Normal
- computed fee: 5000 lamports
- VCA triggered because the transaction is above threshold
Expected functional resultβ
The wallet:
- prepares the Solana transaction,
- checks available balance,
- computes the fee,
- signs the transaction,
- pauses because the transaction is above threshold,
- generates and stores the VCA commitment,
- waits for user confirmation on the Action Confirmation Screen,
- validates the user input,
- simulates the transaction,
- broadcasts the transaction successfully.
2.3 β Ethereum Sepolia testβ
Ethereum Sepolia can be used to validate WalletConnect connectivity and transaction signing.
However, in the current Reown lab flow used for M5 validation, the ETH transaction test is limited:
- it targets a predefined destination,
- it does not provide the same adjustable approval scenario as the Solana test,
- it is therefore not the reference flow for VCA validation in this milestone.
2.4 β Bitcoin connection testβ
Bitcoin can be used to validate WalletConnect connection only.
A transaction flow is not covered here because:
- the Reown test Dapp currently uses Bitcoin Testnet3,
- the wallet implementation used for M5 is configured for Bitcoin Testnet4.
This mismatch prevents an end-to-end transaction validation through the public Reown test page in the current setup.
π οΈ Interpreting Logsβ
This section explains the logs that reviewers should expect for the two main validated scenarios covered by this tutorial:
- WalletConnect session established and balances fetched
- Solana Devnet transaction above threshold, requiring VCA, then successfully broadcast
A β Logs after connecting to the Dappβ
After the WalletConnect URI is pasted and the connection is established, the wallet refreshes chain-specific account data.
What to look forβ
1. Signature verification and account resolutionβ
These lines show that the request is authenticated and the account context is being resolved:
[DEBUG interstellar_extended_signature] ExtendedSignature::Secp256r1 START
[DEBUG interstellar_extended_signature] ExtendedSignature::verify_secp256r1_signature START
[DEBUG interstellar_extended_signature] ExtendedSignature: sig parsed OK
[DEBUG interstellar_extended_signature] ExtendedSignature: verifying_key parsed OK
2. Solana address fetch and balance lookupβ
These lines show that the wallet resolves the Solana address and queries the Devnet balance:
[INFO sol_client::client] [get_sol_address]: START
[INFO sol_client::client] [get_balance_account_str] Fetching balance for account: HAcrhnmhzccnfRWUKafVziDXamytTGiC1xC3xLxL416t
[DEBUG sol_client::rpc] [send_request] Sending RPC request for method: getBalance
When the wallet has not yet been funded, the returned balance is zero:
[DEBUG sol_client::rpc] [send_request] Received response for method getBalance: ... "value":0 ...
[INFO sol_client::client] [get_balance_account_str] Balance fetched for account HAcrhnmhzccnfRWUKafVziDXamytTGiC1xC3xLxL416t: 0
After the wallet receives 0.5 SOL, the balance query returns:
[DEBUG sol_client::rpc] [send_request] Received response for method getBalance: ... "value":500000000 ...
This corresponds to:
500000000 lamports 0.5 SOL
3. Other supported balances may also be queriedβ
The current wallet view also fetches other chain balances linked to the account state. For example:
DOT / Substrate-style account query
[INFO dot_client::client] [get_account] Fetching account address for:
[DEBUG dot_client::client] [get_balance_internal] Querying account:
[DEBUG dot_client::client] [get_balance_internal] Result is null, returning default account info
Bitcoin balance query
[DEBUG btc_client::client] get_balance: START
[INFO btc_client::client] parse_utxos_from_response: SUCCESS: parsed 0 UTXOs, total_value=0 sats
Ethereum balance query
[DEBUG eth_client::client] fetch_balance: START
[DEBUG eth_client::client] fetch_balance: RPC response = RpcResponse { result: Some("0x0"), error: None }
Reviewer interpretationβ
If you see:
- successful Secp256r1 verification logs,
- a Solana address lookup,
- a getBalance RPC call, and a returned value of 0 or later 500000000,
then the WalletConnect session is active and the wallet is correctly refreshing the connected account state for Solana Devnet.
Expected non-blocking warningsβ
The following warnings appear in the logs and are expected in this environment:
[WARN sp_io::storage] storage::start_transaction unimplemented
[WARN sp_io::storage] storage::commit_transaction unimplemented
They do not indicate failure of the WalletConnect flow or of the Solana transaction flow shown in this tutorial.
B β Logs for the successful Solana Devnet transaction with VCAβ
This is the reference end-to-end flow for M5 milestone validation.
The validated example corresponds to:
- balance: 0.5 SOL
- transfer: 0.4 SOL
- threshold exceeded
- VCA required
- successful simulation
- successful broadcast
1. Transaction preparation startsβ
The transaction manager starts preparing the Solana transaction:
[INFO pallet_tx_manager::pallet] [prepare_transaction] START - account=, chain=SOL, amount=Fixed(400000000), fee_type=Normal
Interpretation:
400000000lamports = 0.4 SOL
2. Balance is fetched and validatedβ
The wallet checks the balance before preparing the transfer:
[INFO sol_client::client] [get_balance_account_str] Balance fetched for account HAcrhnmhzccnfRWUKafVziDXamytTGiC1xC3xLxL416t: 500000000
[INFO pallet_tx_manager::pallet] [prepare_transaction] balance = 500000000
Then the balance sufficiency check passes:
[DEBUG sol_client::client] [validate_sufficient_balance] β balance check passed: have=500000000, need=401005000
Interpretation:
- available balance =
500000000lamports - required =
401005000lamports - the transaction can proceed
3. Fee computation is performedβ
The wallet queries recent prioritization fees:
[DEBUG sol_client::fee] [sol-fee] fetching recent prioritization fees
[DEBUG sol_client::fee] [sol-fee] fetched 150 recent priority fees
[DEBUG sol_client::fee] [sol-fee] Normal: selected 0 micro-lamports/CU from 150 samples
Then it computes the final fee:
[INFO sol_client::fee] [sol-fee] Normal: base=5000 + priority=0 (0Β΅L/CU * 200000 CU) = 5000 lamports
[INFO sol_client::client] SOL prepare_transaction: amount=400000000 lamports, fee_type=Normal, fee=5000 lamports, cu_price=0 micro-lamports/CU
Interpretation:
- base fee =
5000lamports - no priority fee was selected in this observed case
- total fee =
5000lamports
4. Transaction is built and signedβ
The latest blockhash is fetched:
[DEBUG sol_client::rpc] [send_request] Sending RPC request for method: getLatestBlockhash
[INFO sol_client::rpc] [send_request] RPC request for method getLatestBlockhash succeeded
The signing step completes successfully:
[DEBUG pallet_key_manager::pallet] [do_sign] Seed unsealed successfully, proceeding with signing
[DEBUG pallet_key_manager::pallet] [do_sign] Seed zeroed after signing
[DEBUG sol_client::client] [build_and_sign_transaction] transaction built and signed: 191 bytes
5. VCA is triggered because the transaction is above thresholdβ
The transaction manager explicitly indicates that approval is required:
[INFO pallet_tx_manager::pallet] [prepare_transaction] Above threshold, requiring VCA confirmation
This is the key log line proving that the conditional approval logic was triggered.
6. The human-readable transaction message is generatedβ
The wallet generates the transaction message used in the confirmation flow:
[DEBUG pallet_tx_manager::pallet] [generate_tx_message] Generated message: Transfer 0.4 SOL to HAcrh...L416t
This is the action summary the user is effectively asked to validate through the PoHI / VCA flow.
7. The VCA commitment is created and storedβ
The system generates the garbled content and stores the associated metadata:
[INFO pallet_tx_validation::pallet] [tx-validation] store_metadata_aux: who = , message_pgarbled_cid = "QmZRh7D7MxdDq8MxhFfDEnWQYYm2XCrdRrogMVaqUHQHRY", message_digits = [6, 9], pinpad_digits = [1, 2, 8, 5, 7, 6, 0, 9, 4, 3]
[INFO pallet_tx_manager::pallet] [SOL-client]-[tx-manager]- Commitment stored with cid="QmZRh7D7MxdDq8MxhFfDEnWQYYm2XCrdRrogMVaqUHQHRY" digits=BoundedVec([6, 9], 4) pinpad_digits=BoundedVec([1, 2, 8, 5, 7, 6, 0, 9, 4, 3], 10)
Interpretation:
- the VCA payload is prepared,
- the randomized challenge is stored,
- the signed transaction is held as pending until user confirmation.
8. User input is checked and the VCA passesβ
When the user completes the Action Confirmation Screen, the validation step checks the input:
[INFO pallet_tx_validation::pallet] [tx-validation] check_input: who = , ipfs_cid = "QmZRh7D7MxdDq8MxhFfDEnWQYYm2XCrdRrogMVaqUHQHRY", input_digits = [5, 7]
[INFO pallet_tx_validation::pallet] [tx-validation] check_input: computed_inputs_from_permutation = [6, 9], message_digits = BoundedVec([6, 9], 10)
[INFO pallet_tx_validation::pallet] [tx-validation] TxPass
[DEBUG pallet_tx_manager::pallet] VCA validation successful
This is the decisive proof that:
- the user completed the challenge,
- the input matched the expected garbled confirmation flow,
- the transaction is allowed to continue.
9. The transaction is simulatedβ
Before broadcasting, the wallet simulates the signed transaction:
[INFO sol_client::client] [simulate_transaction] Simulating transaction
[INFO sol_client::client] [simulate_transaction] Transaction simulation successful
Interpretation:
- the transaction is valid,
- the fee is consistent with the computed estimate,
- simulation succeeded before broadcast.
10. The transaction is broadcast successfullyβ
Finally, the signed transaction is sent to Solana Devnet:
[DEBUG sol_client::rpc] [send_request] Sending RPC request for method: sendTransaction
[INFO sol_client::client] [broadcast_transaction] Transaction sent with signature: qJo1EBoUzXw9eDGgmXv5Bt8cnGydgrjPFD68XyULsMHQi3sUgR6hZihYmjCyMrcQLrwApPjaEoZZR4hWsouDCoh
[INFO pallet_tx_manager::pallet] Transaction broadcast successful: qJo1EBoUzXw9eDGgmXv5Bt8cnGydgrjPFD68XyULsMHQi3sUgR6hZihYmjCyMrcQLrwApPjaEoZZR4hWsouDCoh
Optional: Front-End Accessβ
You can inspect chain state and transactions via:
- Polkadot.js Apps
- Or your preferred Substrate front-end UI
Notesβ
- All services run in Docker containers and use local ports
9944,2090, and5001 - This setup replicates the same runtime environment used in hosted testnets but fully self-contained
- Ideal for offline testing, developer evaluation, or deeper inspection of runtime logs
This Android application is provided as a technical demonstration of Interstellarβs secure Web3 account infrastructure. It serves as a foundation for the forthcoming Android and iOS SDKs, which are still under active development.
Please note that the current user interface and experience are not representative of the final product. Both UI and UX will be significantly refined to align with Interstellarβs core mission: delivering the highest levels of simplicity and security in mobile self-custody.
If you've jumped straight into the evaluation, we recommend consulting the Milestone 1 documentation for key context. It outlines the core architecture, backend logic, and trusted execution flows implemented in this milestone.
The documentation is modularβfeel free to explore only the sections most relevant to your review or interest.
You can also use the search bar (top right corner) to locate specific topics quickly. Helpful keywords include:
VHDL,circuits,garbled,TEE,integritee,SE attestationNFC,VCA,recovery,threshold,trusted UXcomparison,passkey,ledger,authentication,compliance,security,ATT&CK