:IF: Announcing - MutAnt: Mutable Key/Value storage (prev: Anthill)

Port 8080 is the convention for HTTP through a proxy. Port 8443 is a less used convention for HTTPS through a proxy. List of TCP and UDP port numbers - Wikipedia

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? :sweat_smile:

3 Likes

Seriously though…

I got this far

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

and http://127.0.0.1:8080/ is a blank page.

I would pick a higher port number maybe 30080

Maybe for the first 9 apps to claim them 8081 to 8089

3 Likes

6 posts were merged into an existing topic: Possible UK meet

Hehe yeah 8080 that’s my standard development port for everything, but like dweb it’s configurable :slight_smile:

for example to spawn the daemon and web interface with a different port

mutant-daemon --bind 0.0.0.0:1234&
trunk serve --address 0.0.0.0 --port 1235

But changing the daemon port for is not recommended for now. The web is fine tho

@Southside Mmmh that’s concerning :stuck_out_tongue:

Could you give me:

  • The log of the install script
  • 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 :stuck_out_tongue:

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)

2 Likes

OK

busy with OtherStuff right now but I will get back to you ASAP

2 Likes

Still busy but …



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")))
1 Like

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.

1 Like

I never got that far.
The key and Mnemonic Phrase are generated from BIP39 Passphrase Generator ← Is that from @mav?

So Im presuming it’s valid…

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 :stuck_out_tongue:

Sorry - dead busy here

I can use my usual $SECRET_KEY that is loaded in my .bashrc.

I havent checked - if I put that into the BIP39 calculator will that generate a nmemonic for me?

I’m afraid it won’t generate the mnemonic no.

But no problem because your mnemonic and private key can be different :slight_smile: 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

1 Like

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

2 Likes

OK Now I need to feed folk
Back soon and I’ll try as above – THank you :slight_smile:

1 Like

Make it first 2 bytes of sha256(“dweb”) unless it’s < 1024, then add 1024? :slight_smile:

$ red
--== Red 0.6.5 ==-- 
Type HELP for starting information. 

>> checksum "dweb" 'SHA256
== #{
D80AF1A4B6246B32118E3AB3767AE9FC8504C193D6A4C7FC36C6D148DA26783E
}
>> to integer! #{D80A}
== 55306
2 Likes

OK did as requested above.
I was not asked for PRIVATE_KEY nor COLONY_MNEMONIC.
However it sorta seems to work - here is the tail of the output

[2025-06-12T22:19:05Z INFO  mutant_daemon::handlers::metadata] Found 2 keys
[2025-06-12T22:19:05Z DEBUG mutant_daemon::handlers::metadata] Handling Stats request
[2025-06-12T22:19:05Z INFO  mutant_daemon::handlers::metadata] Retrieved storage stats successfully: StorageStats { nb_keys: 2, total_pads: 25, occupied_pads: 2, free_pads: 0, pending_verification_pads: 23 }
[2025-06-12T22:19:05Z DEBUG mutant_daemon::handlers::metadata] Handling WalletBalance request
[2025-06-12T22:19:05Z INFO  mutant_daemon::handlers::metadata] Retrieved wallet balances - Tokens: 6002213133230503493, Gas: 113189204880000
[2025-06-12T22:19:05Z DEBUG mutant_daemon::handlers::metadata] Handling DaemonStatus request
[2025-06-12T22:28:26Z INFO  mutant_daemon::handlers::websocket] WebSocket client disconnected explicitly
[2025-06-12T22:28:26Z DEBUG mutant_daemon::handlers::websocket] WebSocket connection handler finished.
[2025-06-12T22:28:27Z INFO  mutant_daemon::handlers::websocket] WebSocket client connected
[2025-06-12T22:28:27Z DEBUG mutant_daemon::handlers::metadata] Handling ListKeys request
[2025-06-12T22:28:27Z INFO  mutant_daemon::handlers::metadata] Found 2 keys
[2025-06-12T22:28:27Z DEBUG mutant_daemon::handlers::metadata] Handling Stats request
[2025-06-12T22:28:27Z INFO  mutant_daemon::handlers::metadata] Retrieved storage stats successfully: StorageStats { nb_keys: 2, total_pads: 25, occupied_pads: 2, free_pads: 0, pending_verification_pads: 23 }
[2025-06-12T22:28:27Z DEBUG mutant_daemon::handlers::metadata] Handling WalletBalance request
[2025-06-12T22:28:28Z INFO  mutant_daemon::handlers::metadata] Retrieved wallet balances - Tokens: 6002213133230503493, Gas: 113189204880000
[2025-06-12T22:28:28Z DEBUG mutant_daemon::handlers::metadata] Handling DaemonStatus request

but http://127.0.0.1:8080/ still only shows a blank page.

Brave console output is at Brave console output - Pastebin.com

PS can you replace PRIVATE_KEY with SECRET_KEY?

saves setting export PRIVATE_KEY=$SECRET_KEY

port 42352
d=4 w=23 etc

1 Like

Thank you very much for the log, I can see that there is a hard crash

mutant-web-667157d5e60e6ac3.js:1605 Uncaught ReferenceError: updateVideoPlayersZIndex is not defined

I don’t know where that comes from, I never had this before. I’m gonna investigate and try to reproduce !

1 Like

Sorry to be the bearer of bad news … :frowning: