So, I sort of went with that for AntTP. However, I’ve pondered changing it a few times, as folks may actually have a regular proxy on 8080 and it isn’t really a regular HTTP proxy (where it is expected to route to clear net). At the same time, it does give a clue as to how AntTP browser should be configured/used.
Maybe we just need to be creative and think of new default ports?
warning: fields `contact_type` and `display_name` are never read
--> mutant-web/src/app/colony_window.rs:85:9
|
83 | pub struct UserContactInfo {
| --------------- fields in this struct
84 | pub contact_address: String,
85 | pub contact_type: String,
| ^^^^^^^^^^^^
86 | pub display_name: Option<String>,
| ^^^^^^^^^^^^
|
= note: `UserContactInfo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
warning: `mutant-web` (lib) generated 49 warnings (run `cargo fix --lib -p mutant-web` to apply 1 suggestion)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 35.30s
2025-06-12T09:24:28.161004Z INFO fetching cargo artifacts
2025-06-12T09:24:28.524366Z INFO processing WASM for mutant-web
2025-06-12T09:24:28.640663Z INFO calling wasm-bindgen for mutant-web
2025-06-12T09:24:32.800225Z INFO copying generated wasm-bindgen artifacts
2025-06-12T09:24:32.827980Z INFO applying new distribution
2025-06-12T09:24:32.832440Z INFO ✅ success
2025-06-12T09:24:32.832898Z INFO 📡 serving static assets at -> /
2025-06-12T09:24:32.832950Z INFO 📡 server listening at http://127.0.0.1:8080
The complete log of the daemon startup (with RUST_LOG=mutant=debug)
Any errors in your browser console (F12) ?
The most probable is your browser cannot connect to the daemon because it’s not properly started (probably a secret key issue)
I have to make a better system to signal that instead of a blank page
If you run mutant-daemon manually again, it should give you the reason of its failure
You will have to export PRIVATE_KEY="" and export COLONY_MNEMONIC="" that are stored both in the .env file created in the mutant root git directory but not properly loaded outside of the install.sh script (I should have called this version Alpha, seriously xD)
willie@gagarin:~/projects/maidsafe/Mutant$ export PRIVATE_KEY="5e808c7fed9963b0bf351d27c7d9565ee5a9871b581b5106521f753e337a74f134b03185670f78f96cc85164b9cc615c1b838aa6205b068ed196c5a27cea95fa"
willie@gagarin:~/projects/maidsafe/Mutant$ export COLONY_MNEMONIC="royal rely alone prevent load point six know someone filter adult interest"
willie@gagarin:~/projects/maidsafe/Mutant$ RUST_LOG=mutant=debug mutant-daemon
[2025-06-12T13:06:22Z INFO mutant_daemon::app] Starting Mutant Daemon...
[2025-06-12T13:06:22Z INFO mutant_daemon::app] Found PRIVATE_KEY environment variable, using it
[2025-06-12T13:06:22Z INFO mutant_daemon::app] Running in mainnet mode
[2025-06-12T13:06:22Z DEBUG mutant_lib::network] Creating AutonomiNetworkAdapter configuration for network: Mainnet
[2025-06-12T13:06:22Z INFO mutant_lib::network::wallet] Creating Autonomi wallet and key for network: Mainnet
Error: MutAnt(Network(WalletError("Failed to create wallet: Private key is invalid")))
Did you ask the script to generate that private key ? or is it your own ?
Because the script generates invalid keys for now. (I’m gonna fix this right away)
If this is supposed to be a valid key that you know should work, then this is a bug.
Mmh no, that key looks wrong to me. Can you try with one you own ? You will need a minimum of funds on it to create your colony pod at startup anyway so I would recommend that
But no problem because your mnemonic and private key can be different The private key identify you and will pay for stuff, the mnemonic is just for colony to know where to find your stuff.
This is useful if you want to handle multiple pods manually (will have a nice interface in the future)
So you can put any new mnemonic in there
Sorry for the delay - using my std key and a fresh nmemonic I get this
willie@gagarin:~/projects/maidsafe/JAMS$ export PRIVATE_KEY=$SECRET_KEY
willie@gagarin:~/projects/maidsafe/JAMS$ RUST_LOG=mutant=debug mutant-daemon
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Starting Mutant Daemon...
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Found PRIVATE_KEY environment variable, using it
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Running in mainnet mode
[2025-06-12T17:30:36Z DEBUG mutant_lib::network] Creating AutonomiNetworkAdapter configuration for network: Mainnet
[2025-06-12T17:30:36Z INFO mutant_lib::network::wallet] Creating Autonomi wallet and key for network: Mainnet
[2025-06-12T17:30:36Z INFO mutant_lib::index::master_index::core] Loaded master index from file for Mainnet.
[2025-06-12T17:30:36Z INFO mutant_daemon::app] MutAnt initialized successfully
[2025-06-12T17:30:36Z INFO mutant_daemon::handlers::colony] Colony initialization parameters stored for on-demand initialization
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Initializing colony manager at daemon startup...
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Task manager initialized.
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Active keys manager initialized.
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Configuring WebSocket with max_message_size=2147483648 bytes, max_frame_size=2147483648 bytes
[2025-06-12T17:30:36Z INFO mutant_daemon::app] WebSocket server listening on 127.0.0.1:3030
[2025-06-12T17:30:36Z INFO mutant_daemon::app] Starting server task...
[2025-06-12T17:30:36Z INFO mutant_daemon::handlers::colony] Starting colony manager initialization
[2025-06-12T17:30:36Z INFO mutant_daemon::colony] Creating new colony key store from environment mnemonic
[2025-06-12T17:30:36Z INFO mutant_daemon::colony] Using provided private key for colony wallet
[2025-06-12T17:30:36Z INFO mutant_daemon::colony] Derived pod public address: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:30:38Z INFO mutant_daemon::handlers::colony] Ensuring user pod exists during initialization
[2025-06-12T17:30:38Z INFO mutant_daemon::colony] Ensuring user pod exists: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:30:38Z DEBUG mutant_daemon::colony] Starting ensure_user_pod_exists method
[2025-06-12T17:30:38Z DEBUG mutant_daemon::colony] Getting client for pod operations
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] Acquiring locks for data_store, key_store, and graph
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] Creating PodManager
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] PodManager created successfully
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] Checking if pod exists locally: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] About to call pod_manager.get_subject_data()
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] get_subject_data() returned Ok, data length: 53
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] Pod query returned empty results locally: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:30:39Z INFO mutant_daemon::colony] Pod not found locally, syncing from network: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:30:39Z DEBUG mutant_daemon::colony] Starting refresh_cache() to sync from network
[2025-06-12T17:33:31Z DEBUG mutant_daemon::colony] Completed refresh_cache() successfully
[2025-06-12T17:33:31Z DEBUG mutant_daemon::colony] Checking if pod exists locally after sync: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:33:31Z DEBUG mutant_daemon::colony] Pod query returned empty results after sync: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:33:31Z INFO mutant_daemon::colony] Pod not found after sync, creating new pod: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:35:11Z DEBUG mutant_daemon::colony] Adding pod metadata: pod_address=89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4, subject_id=pod_89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4, metadata_len=460
[2025-06-12T17:37:56Z INFO mutant_daemon::colony] Successfully created and uploaded user pod: 89ec44df4cf1dc469bd49b3dc30f000bf4fcfefcc1566d81ca1a5a0bb522c0a6555bcd3902da122a6d064fa184c288e4
[2025-06-12T17:37:56Z INFO mutant_daemon::handlers::colony] User pod verified/created successfully during initialization
[2025-06-12T17:37:56Z INFO mutant_daemon::handlers::colony] Colony manager initialized successfully
[2025-06-12T17:37:56Z INFO mutant_daemon::app] Colony manager initialized successfully at daemon startup
which is more encouraging. I will shut this down and try the script again
That’s actually the perfect output ! Very nice.
I’m working on a proper onboarding experience with valid key generation. It’s gonna be a lot easier soon.
Running the script again will ask you about your keys and mnemonic again, you can always just run the daemon by hand like you did, then run the cd mutant-web && trunk serve for the webserver
It will avoid checking for the whole installation every time you run it
Make it first 2 bytes of sha256(“dweb”) unless it’s < 1024, then add 1024?
$ red
--== Red 0.6.5 ==--
Type HELP for starting information.
>> checksum "dweb" 'SHA256
== #{
D80AF1A4B6246B32118E3AB3767AE9FC8504C193D6A4C7FC36C6D148DA26783E
}
>> to integer! #{D80A}
== 55306