diff --git a/.github/workflows/dev-release.yml b/.github/workflows/dev-release.yml index 73dfe371..286f9b07 100644 --- a/.github/workflows/dev-release.yml +++ b/.github/workflows/dev-release.yml @@ -159,7 +159,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./discovery/Dockerfile + file: ./crates/discovery/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/discovery:dev @@ -171,7 +171,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./validator/Dockerfile + file: ./crates/validator/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/validator:dev @@ -183,7 +183,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./orchestrator/Dockerfile + file: ./crates/orchestrator/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/orchestrator:dev diff --git a/.github/workflows/prod-release.yml b/.github/workflows/prod-release.yml index 26729ddc..a3ad59f8 100644 --- a/.github/workflows/prod-release.yml +++ b/.github/workflows/prod-release.yml @@ -157,7 +157,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./discovery/Dockerfile + file: ./crates/discovery/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/discovery:latest @@ -170,7 +170,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./validator/Dockerfile + file: ./crates/validator/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/validator:latest @@ -183,7 +183,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./orchestrator/Dockerfile + file: ./crates/orchestrator/Dockerfile push: true tags: | ghcr.io/${{ steps.meta.outputs.repo_lower }}/orchestrator:latest diff --git a/Cargo.lock b/Cargo.lock index f9ef3a00..7aa50181 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2364,7 +2364,7 @@ dependencies = [ [[package]] name = "discovery" -version = "0.2.5" +version = "0.2.6" dependencies = [ "actix-web", "alloy", @@ -4403,7 +4403,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchestrator" -version = "0.2.5" +version = "0.2.6" dependencies = [ "actix-web", "alloy", @@ -6562,7 +6562,7 @@ dependencies = [ [[package]] name = "validator" -version = "0.2.5" +version = "0.2.6" dependencies = [ "actix-web", "alloy", @@ -7206,7 +7206,7 @@ dependencies = [ [[package]] name = "worker" -version = "0.2.5" +version = "0.2.6" dependencies = [ "actix-web", "alloy", diff --git a/Cargo.toml b/Cargo.toml index 3b63e8dc..4055959a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,16 +1,16 @@ [workspace] members = [ - "discovery", - "worker", - "validator", - "shared", - "orchestrator", - "dev-utils", + "crates/discovery", + "crates/worker", + "crates/validator", + "crates/shared", + "crates/orchestrator", + "crates/dev-utils", ] resolver = "2" [workspace.dependencies] -shared = { path = "shared" } +shared = { path = "crates/shared" } actix-web = "4.9.0" clap = { version = "4.5.27", features = ["derive"] } serde = { version = "1.0.219", features = ["derive"] } @@ -35,7 +35,7 @@ redis = "0.28.1" redis-test = "0.8.0" [workspace.package] -version = "0.2.5" +version = "0.2.6" edition = "2021" [workspace.features] diff --git a/Makefile b/Makefile index 71d92d76..380988f4 100644 --- a/Makefile +++ b/Makefile @@ -68,22 +68,22 @@ whitelist-provider: watch-discovery: set -a; source .env; set +a; \ - cargo watch -w discovery/src -x "run --bin discovery -- --rpc-url $${RPC_URL}" + cargo watch -w crates/discovery/src -x "run --bin discovery -- --rpc-url $${RPC_URL}" watch-worker: set -a; source ${ENV_FILE}; set +a; \ - cargo watch -w worker/src -x "run --bin worker -- run --port 8091 --external-ip $${WORKER_EXTERNAL_IP:-localhost} --compute-pool-id $$WORKER_COMPUTE_POOL_ID --skip-system-checks $${LOKI_URL:+--loki-url $${LOKI_URL}} --log-level $${LOG_LEVEL:-info}" + cargo watch -w crates/worker/src -x "run --bin worker -- run --port 8091 --external-ip $${WORKER_EXTERNAL_IP:-localhost} --compute-pool-id $$WORKER_COMPUTE_POOL_ID --skip-system-checks $${LOKI_URL:+--loki-url $${LOKI_URL}} --log-level $${LOG_LEVEL:-info}" watch-check: - cargo watch -w worker/src -x "run --bin worker -- check" + cargo watch -w crates/worker/src -x "run --bin worker -- check" watch-validator: set -a; source ${ENV_FILE}; set +a; \ - cargo watch -w validator/src -x "run --bin validator -- --validator-key $${PRIVATE_KEY_VALIDATOR} --rpc-url $${RPC_URL} --pool-id $${WORKER_COMPUTE_POOL_ID} --toploc-server-url $${TOPLOC_SERVER_URL} --toploc-auth-token $${TOPLOC_AUTH_TOKEN} --s3-credentials $${S3_CREDENTIALS} --bucket-name $${BUCKET_NAME} -l $${LOG_LEVEL:-info} --toploc-grace-interval $${TOPLOC_GRACE_INTERVAL:-30}" + cargo watch -w crates/validator/src -x "run --bin validator -- --validator-key $${PRIVATE_KEY_VALIDATOR} --rpc-url $${RPC_URL} --pool-id $${WORKER_COMPUTE_POOL_ID} --toploc-server-url $${TOPLOC_SERVER_URL} --toploc-auth-token $${TOPLOC_AUTH_TOKEN} --s3-credentials $${S3_CREDENTIALS} --bucket-name $${BUCKET_NAME} -l $${LOG_LEVEL:-info} --toploc-grace-interval $${TOPLOC_GRACE_INTERVAL:-30}" watch-orchestrator: set -a; source ${ENV_FILE}; set +a; \ - cargo watch -w orchestrator/src -x "run --bin orchestrator -- -r $$RPC_URL -k $$POOL_OWNER_PRIVATE_KEY -d 0 -p 8090 -i 10 -u http://localhost:8090 --s3-credentials $$S3_CREDENTIALS --compute-pool-id $$WORKER_COMPUTE_POOL_ID --bucket-name $$BUCKET_NAME -l $${LOG_LEVEL:-info} --hourly-s3-upload-limit $${HOURLY_S3_LIMIT:-3}" + cargo watch -w crates/orchestrator/src -x "run --bin orchestrator -- -r $$RPC_URL -k $$POOL_OWNER_PRIVATE_KEY -d 0 -p 8090 -i 10 -u http://localhost:8090 --s3-credentials $$S3_CREDENTIALS --compute-pool-id $$WORKER_COMPUTE_POOL_ID --bucket-name $$BUCKET_NAME -l $${LOG_LEVEL:-info} --hourly-s3-upload-limit $${HOURLY_S3_LIMIT:-3}" build-worker: cargo build --release --bin worker diff --git a/dev-utils/Cargo.toml b/crates/dev-utils/Cargo.toml similarity index 100% rename from dev-utils/Cargo.toml rename to crates/dev-utils/Cargo.toml diff --git a/dev-utils/examples/compute_pool.rs b/crates/dev-utils/examples/compute_pool.rs similarity index 100% rename from dev-utils/examples/compute_pool.rs rename to crates/dev-utils/examples/compute_pool.rs diff --git a/dev-utils/examples/create_domain.rs b/crates/dev-utils/examples/create_domain.rs similarity index 100% rename from dev-utils/examples/create_domain.rs rename to crates/dev-utils/examples/create_domain.rs diff --git a/dev-utils/examples/eject_node.rs b/crates/dev-utils/examples/eject_node.rs similarity index 100% rename from dev-utils/examples/eject_node.rs rename to crates/dev-utils/examples/eject_node.rs diff --git a/dev-utils/examples/get_node_info.rs b/crates/dev-utils/examples/get_node_info.rs similarity index 100% rename from dev-utils/examples/get_node_info.rs rename to crates/dev-utils/examples/get_node_info.rs diff --git a/dev-utils/examples/invalidate_work.rs b/crates/dev-utils/examples/invalidate_work.rs similarity index 100% rename from dev-utils/examples/invalidate_work.rs rename to crates/dev-utils/examples/invalidate_work.rs diff --git a/dev-utils/examples/mint_ai_token.rs b/crates/dev-utils/examples/mint_ai_token.rs similarity index 100% rename from dev-utils/examples/mint_ai_token.rs rename to crates/dev-utils/examples/mint_ai_token.rs diff --git a/dev-utils/examples/set_min_stake_amount.rs b/crates/dev-utils/examples/set_min_stake_amount.rs similarity index 100% rename from dev-utils/examples/set_min_stake_amount.rs rename to crates/dev-utils/examples/set_min_stake_amount.rs diff --git a/dev-utils/examples/start_compute_pool.rs b/crates/dev-utils/examples/start_compute_pool.rs similarity index 100% rename from dev-utils/examples/start_compute_pool.rs rename to crates/dev-utils/examples/start_compute_pool.rs diff --git a/dev-utils/examples/submit_work.rs b/crates/dev-utils/examples/submit_work.rs similarity index 100% rename from dev-utils/examples/submit_work.rs rename to crates/dev-utils/examples/submit_work.rs diff --git a/dev-utils/examples/transfer_eth.rs b/crates/dev-utils/examples/transfer_eth.rs similarity index 100% rename from dev-utils/examples/transfer_eth.rs rename to crates/dev-utils/examples/transfer_eth.rs diff --git a/dev-utils/examples/whitelist_provider.rs b/crates/dev-utils/examples/whitelist_provider.rs similarity index 100% rename from dev-utils/examples/whitelist_provider.rs rename to crates/dev-utils/examples/whitelist_provider.rs diff --git a/discovery/Cargo.toml b/crates/discovery/Cargo.toml similarity index 100% rename from discovery/Cargo.toml rename to crates/discovery/Cargo.toml diff --git a/discovery/Dockerfile b/crates/discovery/Dockerfile similarity index 100% rename from discovery/Dockerfile rename to crates/discovery/Dockerfile diff --git a/discovery/src/api/mod.rs b/crates/discovery/src/api/mod.rs similarity index 100% rename from discovery/src/api/mod.rs rename to crates/discovery/src/api/mod.rs diff --git a/discovery/src/api/routes/get_nodes.rs b/crates/discovery/src/api/routes/get_nodes.rs similarity index 100% rename from discovery/src/api/routes/get_nodes.rs rename to crates/discovery/src/api/routes/get_nodes.rs diff --git a/discovery/src/api/routes/mod.rs b/crates/discovery/src/api/routes/mod.rs similarity index 100% rename from discovery/src/api/routes/mod.rs rename to crates/discovery/src/api/routes/mod.rs diff --git a/discovery/src/api/routes/node.rs b/crates/discovery/src/api/routes/node.rs similarity index 92% rename from discovery/src/api/routes/node.rs rename to crates/discovery/src/api/routes/node.rs index 54ab4edb..851444be 100644 --- a/discovery/src/api/routes/node.rs +++ b/crates/discovery/src/api/routes/node.rs @@ -44,6 +44,33 @@ pub async fn register_node( return HttpResponse::Ok() .json(ApiResponse::new(true, "Node registered successfully")); } + // Temp. adjustment: The gpu object has changed and includes a vec of indices now. + // This now causes the discovery svc to reject nodes that have just updated their software. + // This is a temporary fix to ensure the node is accepted even though the indices are different. + let mut existing_clone = existing_node.node.clone(); + match &update_node.compute_specs { + Some(compute_specs) => { + if let Some(ref mut existing_compute_specs) = existing_clone.compute_specs { + match &compute_specs.gpu { + Some(gpu_specs) => { + existing_compute_specs.gpu = Some(gpu_specs.clone()); + } + None => { + existing_compute_specs.gpu = None; + } + } + } + } + None => { + existing_clone.compute_specs = None; + } + } + + if existing_clone == update_node { + log::info!("Node {} is already active in a pool", update_node.id); + return HttpResponse::Ok() + .json(ApiResponse::new(true, "Node registered successfully")); + } warn!( "Node {} tried to change discovery but is already active in a pool", diff --git a/discovery/src/api/server.rs b/crates/discovery/src/api/server.rs similarity index 100% rename from discovery/src/api/server.rs rename to crates/discovery/src/api/server.rs diff --git a/discovery/src/chainsync/mod.rs b/crates/discovery/src/chainsync/mod.rs similarity index 100% rename from discovery/src/chainsync/mod.rs rename to crates/discovery/src/chainsync/mod.rs diff --git a/discovery/src/chainsync/sync.rs b/crates/discovery/src/chainsync/sync.rs similarity index 100% rename from discovery/src/chainsync/sync.rs rename to crates/discovery/src/chainsync/sync.rs diff --git a/discovery/src/main.rs b/crates/discovery/src/main.rs similarity index 100% rename from discovery/src/main.rs rename to crates/discovery/src/main.rs diff --git a/discovery/src/store/mod.rs b/crates/discovery/src/store/mod.rs similarity index 100% rename from discovery/src/store/mod.rs rename to crates/discovery/src/store/mod.rs diff --git a/discovery/src/store/node_store.rs b/crates/discovery/src/store/node_store.rs similarity index 100% rename from discovery/src/store/node_store.rs rename to crates/discovery/src/store/node_store.rs diff --git a/discovery/src/store/redis.rs b/crates/discovery/src/store/redis.rs similarity index 100% rename from discovery/src/store/redis.rs rename to crates/discovery/src/store/redis.rs diff --git a/orchestrator/.gitignore b/crates/orchestrator/.gitignore similarity index 100% rename from orchestrator/.gitignore rename to crates/orchestrator/.gitignore diff --git a/orchestrator/Cargo.toml b/crates/orchestrator/Cargo.toml similarity index 100% rename from orchestrator/Cargo.toml rename to crates/orchestrator/Cargo.toml diff --git a/orchestrator/Dockerfile b/crates/orchestrator/Dockerfile similarity index 100% rename from orchestrator/Dockerfile rename to crates/orchestrator/Dockerfile diff --git a/orchestrator/makefile b/crates/orchestrator/makefile similarity index 100% rename from orchestrator/makefile rename to crates/orchestrator/makefile diff --git a/orchestrator/src/api/mod.rs b/crates/orchestrator/src/api/mod.rs similarity index 100% rename from orchestrator/src/api/mod.rs rename to crates/orchestrator/src/api/mod.rs diff --git a/orchestrator/src/api/routes/heartbeat.rs b/crates/orchestrator/src/api/routes/heartbeat.rs similarity index 100% rename from orchestrator/src/api/routes/heartbeat.rs rename to crates/orchestrator/src/api/routes/heartbeat.rs diff --git a/orchestrator/src/api/routes/metrics.rs b/crates/orchestrator/src/api/routes/metrics.rs similarity index 100% rename from orchestrator/src/api/routes/metrics.rs rename to crates/orchestrator/src/api/routes/metrics.rs diff --git a/orchestrator/src/api/routes/mod.rs b/crates/orchestrator/src/api/routes/mod.rs similarity index 100% rename from orchestrator/src/api/routes/mod.rs rename to crates/orchestrator/src/api/routes/mod.rs diff --git a/orchestrator/src/api/routes/nodes.rs b/crates/orchestrator/src/api/routes/nodes.rs similarity index 100% rename from orchestrator/src/api/routes/nodes.rs rename to crates/orchestrator/src/api/routes/nodes.rs diff --git a/orchestrator/src/api/routes/storage.rs b/crates/orchestrator/src/api/routes/storage.rs similarity index 100% rename from orchestrator/src/api/routes/storage.rs rename to crates/orchestrator/src/api/routes/storage.rs diff --git a/orchestrator/src/api/routes/task.rs b/crates/orchestrator/src/api/routes/task.rs similarity index 100% rename from orchestrator/src/api/routes/task.rs rename to crates/orchestrator/src/api/routes/task.rs diff --git a/orchestrator/src/api/server.rs b/crates/orchestrator/src/api/server.rs similarity index 100% rename from orchestrator/src/api/server.rs rename to crates/orchestrator/src/api/server.rs diff --git a/orchestrator/src/api/tests/helper.rs b/crates/orchestrator/src/api/tests/helper.rs similarity index 100% rename from orchestrator/src/api/tests/helper.rs rename to crates/orchestrator/src/api/tests/helper.rs diff --git a/orchestrator/src/api/tests/mod.rs b/crates/orchestrator/src/api/tests/mod.rs similarity index 100% rename from orchestrator/src/api/tests/mod.rs rename to crates/orchestrator/src/api/tests/mod.rs diff --git a/orchestrator/src/discovery/mod.rs b/crates/orchestrator/src/discovery/mod.rs similarity index 100% rename from orchestrator/src/discovery/mod.rs rename to crates/orchestrator/src/discovery/mod.rs diff --git a/orchestrator/src/discovery/monitor.rs b/crates/orchestrator/src/discovery/monitor.rs similarity index 100% rename from orchestrator/src/discovery/monitor.rs rename to crates/orchestrator/src/discovery/monitor.rs diff --git a/orchestrator/src/main.rs b/crates/orchestrator/src/main.rs similarity index 92% rename from orchestrator/src/main.rs rename to crates/orchestrator/src/main.rs index 5b6056c3..621bf487 100644 --- a/orchestrator/src/main.rs +++ b/crates/orchestrator/src/main.rs @@ -11,12 +11,15 @@ use crate::node::status_update::NodeStatusUpdater; use crate::store::core::RedisStore; use crate::store::core::StoreContext; use crate::utils::loop_heartbeats::LoopHeartbeats; +use alloy::primitives::U256; use anyhow::Result; use clap::Parser; use log::debug; use log::error; +use log::info; use log::LevelFilter; use shared::web3::contracts::core::builder::ContractBuilder; +use shared::web3::contracts::structs::compute_pool::PoolStatus; use shared::web3::wallet::Wallet; use std::sync::Arc; use tokio::task::JoinSet; @@ -140,6 +143,22 @@ async fn main() -> Result<()> { .unwrap(), ); + match contracts + .compute_pool + .get_pool_info(U256::from(compute_pool_id)) + .await + { + Ok(pool) if pool.status == PoolStatus::ACTIVE => Arc::new(pool), + Ok(_) => { + info!("Pool is not active. Exiting."); + return Ok(()); + } + Err(e) => { + error!("Failed to get pool info: {}", e); + return Ok(()); + } + }; + let discovery_store_context = store_context.clone(); let discovery_heartbeats = heartbeats.clone(); tasks.spawn(async move { diff --git a/orchestrator/src/models/mod.rs b/crates/orchestrator/src/models/mod.rs similarity index 100% rename from orchestrator/src/models/mod.rs rename to crates/orchestrator/src/models/mod.rs diff --git a/orchestrator/src/models/node.rs b/crates/orchestrator/src/models/node.rs similarity index 100% rename from orchestrator/src/models/node.rs rename to crates/orchestrator/src/models/node.rs diff --git a/orchestrator/src/node/invite.rs b/crates/orchestrator/src/node/invite.rs similarity index 100% rename from orchestrator/src/node/invite.rs rename to crates/orchestrator/src/node/invite.rs diff --git a/orchestrator/src/node/mod.rs b/crates/orchestrator/src/node/mod.rs similarity index 100% rename from orchestrator/src/node/mod.rs rename to crates/orchestrator/src/node/mod.rs diff --git a/orchestrator/src/node/status_update.rs b/crates/orchestrator/src/node/status_update.rs similarity index 100% rename from orchestrator/src/node/status_update.rs rename to crates/orchestrator/src/node/status_update.rs diff --git a/orchestrator/src/store/core/context.rs b/crates/orchestrator/src/store/core/context.rs similarity index 100% rename from orchestrator/src/store/core/context.rs rename to crates/orchestrator/src/store/core/context.rs diff --git a/orchestrator/src/store/core/mod.rs b/crates/orchestrator/src/store/core/mod.rs similarity index 100% rename from orchestrator/src/store/core/mod.rs rename to crates/orchestrator/src/store/core/mod.rs diff --git a/orchestrator/src/store/core/redis.rs b/crates/orchestrator/src/store/core/redis.rs similarity index 100% rename from orchestrator/src/store/core/redis.rs rename to crates/orchestrator/src/store/core/redis.rs diff --git a/orchestrator/src/store/domains/heartbeat_store.rs b/crates/orchestrator/src/store/domains/heartbeat_store.rs similarity index 100% rename from orchestrator/src/store/domains/heartbeat_store.rs rename to crates/orchestrator/src/store/domains/heartbeat_store.rs diff --git a/orchestrator/src/store/domains/metrics_store.rs b/crates/orchestrator/src/store/domains/metrics_store.rs similarity index 100% rename from orchestrator/src/store/domains/metrics_store.rs rename to crates/orchestrator/src/store/domains/metrics_store.rs diff --git a/orchestrator/src/store/domains/mod.rs b/crates/orchestrator/src/store/domains/mod.rs similarity index 100% rename from orchestrator/src/store/domains/mod.rs rename to crates/orchestrator/src/store/domains/mod.rs diff --git a/orchestrator/src/store/domains/node_store.rs b/crates/orchestrator/src/store/domains/node_store.rs similarity index 100% rename from orchestrator/src/store/domains/node_store.rs rename to crates/orchestrator/src/store/domains/node_store.rs diff --git a/orchestrator/src/store/domains/task_store.rs b/crates/orchestrator/src/store/domains/task_store.rs similarity index 100% rename from orchestrator/src/store/domains/task_store.rs rename to crates/orchestrator/src/store/domains/task_store.rs diff --git a/orchestrator/src/store/mod.rs b/crates/orchestrator/src/store/mod.rs similarity index 100% rename from orchestrator/src/store/mod.rs rename to crates/orchestrator/src/store/mod.rs diff --git a/orchestrator/src/utils/loop_heartbeats.rs b/crates/orchestrator/src/utils/loop_heartbeats.rs similarity index 100% rename from orchestrator/src/utils/loop_heartbeats.rs rename to crates/orchestrator/src/utils/loop_heartbeats.rs diff --git a/orchestrator/src/utils/mod.rs b/crates/orchestrator/src/utils/mod.rs similarity index 100% rename from orchestrator/src/utils/mod.rs rename to crates/orchestrator/src/utils/mod.rs diff --git a/shared/Cargo.toml b/crates/shared/Cargo.toml similarity index 100% rename from shared/Cargo.toml rename to crates/shared/Cargo.toml diff --git a/shared/artifacts/abi/ai_token.json b/crates/shared/artifacts/abi/ai_token.json similarity index 100% rename from shared/artifacts/abi/ai_token.json rename to crates/shared/artifacts/abi/ai_token.json diff --git a/shared/artifacts/abi/compute_pool.json b/crates/shared/artifacts/abi/compute_pool.json similarity index 100% rename from shared/artifacts/abi/compute_pool.json rename to crates/shared/artifacts/abi/compute_pool.json diff --git a/shared/artifacts/abi/compute_registry.json b/crates/shared/artifacts/abi/compute_registry.json similarity index 100% rename from shared/artifacts/abi/compute_registry.json rename to crates/shared/artifacts/abi/compute_registry.json diff --git a/shared/artifacts/abi/deployments.json b/crates/shared/artifacts/abi/deployments.json similarity index 100% rename from shared/artifacts/abi/deployments.json rename to crates/shared/artifacts/abi/deployments.json diff --git a/shared/artifacts/abi/domain_registry.json b/crates/shared/artifacts/abi/domain_registry.json similarity index 100% rename from shared/artifacts/abi/domain_registry.json rename to crates/shared/artifacts/abi/domain_registry.json diff --git a/shared/artifacts/abi/prime_network.json b/crates/shared/artifacts/abi/prime_network.json similarity index 100% rename from shared/artifacts/abi/prime_network.json rename to crates/shared/artifacts/abi/prime_network.json diff --git a/shared/artifacts/abi/rewards_distributor.json b/crates/shared/artifacts/abi/rewards_distributor.json similarity index 100% rename from shared/artifacts/abi/rewards_distributor.json rename to crates/shared/artifacts/abi/rewards_distributor.json diff --git a/shared/artifacts/abi/stake_manager.json b/crates/shared/artifacts/abi/stake_manager.json similarity index 100% rename from shared/artifacts/abi/stake_manager.json rename to crates/shared/artifacts/abi/stake_manager.json diff --git a/shared/artifacts/abi/synthetic_data_work_validator.json b/crates/shared/artifacts/abi/synthetic_data_work_validator.json similarity index 100% rename from shared/artifacts/abi/synthetic_data_work_validator.json rename to crates/shared/artifacts/abi/synthetic_data_work_validator.json diff --git a/shared/src/lib.rs b/crates/shared/src/lib.rs similarity index 100% rename from shared/src/lib.rs rename to crates/shared/src/lib.rs diff --git a/shared/src/models/api.rs b/crates/shared/src/models/api.rs similarity index 100% rename from shared/src/models/api.rs rename to crates/shared/src/models/api.rs diff --git a/shared/src/models/challenge.rs b/crates/shared/src/models/challenge.rs similarity index 100% rename from shared/src/models/challenge.rs rename to crates/shared/src/models/challenge.rs diff --git a/shared/src/models/heartbeat.rs b/crates/shared/src/models/heartbeat.rs similarity index 100% rename from shared/src/models/heartbeat.rs rename to crates/shared/src/models/heartbeat.rs diff --git a/shared/src/models/invite.rs b/crates/shared/src/models/invite.rs similarity index 100% rename from shared/src/models/invite.rs rename to crates/shared/src/models/invite.rs diff --git a/shared/src/models/metric.rs b/crates/shared/src/models/metric.rs similarity index 100% rename from shared/src/models/metric.rs rename to crates/shared/src/models/metric.rs diff --git a/shared/src/models/mod.rs b/crates/shared/src/models/mod.rs similarity index 100% rename from shared/src/models/mod.rs rename to crates/shared/src/models/mod.rs diff --git a/shared/src/models/node.rs b/crates/shared/src/models/node.rs similarity index 100% rename from shared/src/models/node.rs rename to crates/shared/src/models/node.rs diff --git a/shared/src/models/task.rs b/crates/shared/src/models/task.rs similarity index 100% rename from shared/src/models/task.rs rename to crates/shared/src/models/task.rs diff --git a/shared/src/security/api_key_middleware.rs b/crates/shared/src/security/api_key_middleware.rs similarity index 100% rename from shared/src/security/api_key_middleware.rs rename to crates/shared/src/security/api_key_middleware.rs diff --git a/shared/src/security/auth_signature_middleware.rs b/crates/shared/src/security/auth_signature_middleware.rs similarity index 100% rename from shared/src/security/auth_signature_middleware.rs rename to crates/shared/src/security/auth_signature_middleware.rs diff --git a/shared/src/security/mod.rs b/crates/shared/src/security/mod.rs similarity index 100% rename from shared/src/security/mod.rs rename to crates/shared/src/security/mod.rs diff --git a/shared/src/security/request_signer.rs b/crates/shared/src/security/request_signer.rs similarity index 100% rename from shared/src/security/request_signer.rs rename to crates/shared/src/security/request_signer.rs diff --git a/shared/src/utils/google_cloud.rs b/crates/shared/src/utils/google_cloud.rs similarity index 100% rename from shared/src/utils/google_cloud.rs rename to crates/shared/src/utils/google_cloud.rs diff --git a/shared/src/utils/mod.rs b/crates/shared/src/utils/mod.rs similarity index 100% rename from shared/src/utils/mod.rs rename to crates/shared/src/utils/mod.rs diff --git a/shared/src/web3/contracts/constants/addresses.rs b/crates/shared/src/web3/contracts/constants/addresses.rs similarity index 100% rename from shared/src/web3/contracts/constants/addresses.rs rename to crates/shared/src/web3/contracts/constants/addresses.rs diff --git a/shared/src/web3/contracts/constants/mod.rs b/crates/shared/src/web3/contracts/constants/mod.rs similarity index 100% rename from shared/src/web3/contracts/constants/mod.rs rename to crates/shared/src/web3/contracts/constants/mod.rs diff --git a/shared/src/web3/contracts/core/builder.rs b/crates/shared/src/web3/contracts/core/builder.rs similarity index 100% rename from shared/src/web3/contracts/core/builder.rs rename to crates/shared/src/web3/contracts/core/builder.rs diff --git a/shared/src/web3/contracts/core/contract.rs b/crates/shared/src/web3/contracts/core/contract.rs similarity index 100% rename from shared/src/web3/contracts/core/contract.rs rename to crates/shared/src/web3/contracts/core/contract.rs diff --git a/shared/src/web3/contracts/core/error.rs b/crates/shared/src/web3/contracts/core/error.rs similarity index 100% rename from shared/src/web3/contracts/core/error.rs rename to crates/shared/src/web3/contracts/core/error.rs diff --git a/shared/src/web3/contracts/core/mod.rs b/crates/shared/src/web3/contracts/core/mod.rs similarity index 100% rename from shared/src/web3/contracts/core/mod.rs rename to crates/shared/src/web3/contracts/core/mod.rs diff --git a/shared/src/web3/contracts/helpers/mod.rs b/crates/shared/src/web3/contracts/helpers/mod.rs similarity index 100% rename from shared/src/web3/contracts/helpers/mod.rs rename to crates/shared/src/web3/contracts/helpers/mod.rs diff --git a/shared/src/web3/contracts/helpers/utils.rs b/crates/shared/src/web3/contracts/helpers/utils.rs similarity index 100% rename from shared/src/web3/contracts/helpers/utils.rs rename to crates/shared/src/web3/contracts/helpers/utils.rs diff --git a/shared/src/web3/contracts/implementations/ai_token_contract.rs b/crates/shared/src/web3/contracts/implementations/ai_token_contract.rs similarity index 100% rename from shared/src/web3/contracts/implementations/ai_token_contract.rs rename to crates/shared/src/web3/contracts/implementations/ai_token_contract.rs diff --git a/shared/src/web3/contracts/implementations/compute_pool_contract.rs b/crates/shared/src/web3/contracts/implementations/compute_pool_contract.rs similarity index 100% rename from shared/src/web3/contracts/implementations/compute_pool_contract.rs rename to crates/shared/src/web3/contracts/implementations/compute_pool_contract.rs diff --git a/shared/src/web3/contracts/implementations/compute_registry_contract.rs b/crates/shared/src/web3/contracts/implementations/compute_registry_contract.rs similarity index 100% rename from shared/src/web3/contracts/implementations/compute_registry_contract.rs rename to crates/shared/src/web3/contracts/implementations/compute_registry_contract.rs diff --git a/shared/src/web3/contracts/implementations/domain_registry_contract.rs b/crates/shared/src/web3/contracts/implementations/domain_registry_contract.rs similarity index 100% rename from shared/src/web3/contracts/implementations/domain_registry_contract.rs rename to crates/shared/src/web3/contracts/implementations/domain_registry_contract.rs diff --git a/shared/src/web3/contracts/implementations/mod.rs b/crates/shared/src/web3/contracts/implementations/mod.rs similarity index 100% rename from shared/src/web3/contracts/implementations/mod.rs rename to crates/shared/src/web3/contracts/implementations/mod.rs diff --git a/shared/src/web3/contracts/implementations/prime_network_contract.rs b/crates/shared/src/web3/contracts/implementations/prime_network_contract.rs similarity index 100% rename from shared/src/web3/contracts/implementations/prime_network_contract.rs rename to crates/shared/src/web3/contracts/implementations/prime_network_contract.rs diff --git a/shared/src/web3/contracts/implementations/stake_manager.rs b/crates/shared/src/web3/contracts/implementations/stake_manager.rs similarity index 100% rename from shared/src/web3/contracts/implementations/stake_manager.rs rename to crates/shared/src/web3/contracts/implementations/stake_manager.rs diff --git a/shared/src/web3/contracts/implementations/work_validators/mod.rs b/crates/shared/src/web3/contracts/implementations/work_validators/mod.rs similarity index 100% rename from shared/src/web3/contracts/implementations/work_validators/mod.rs rename to crates/shared/src/web3/contracts/implementations/work_validators/mod.rs diff --git a/shared/src/web3/contracts/implementations/work_validators/synthetic_data_validator.rs b/crates/shared/src/web3/contracts/implementations/work_validators/synthetic_data_validator.rs similarity index 100% rename from shared/src/web3/contracts/implementations/work_validators/synthetic_data_validator.rs rename to crates/shared/src/web3/contracts/implementations/work_validators/synthetic_data_validator.rs diff --git a/shared/src/web3/contracts/mod.rs b/crates/shared/src/web3/contracts/mod.rs similarity index 100% rename from shared/src/web3/contracts/mod.rs rename to crates/shared/src/web3/contracts/mod.rs diff --git a/shared/src/web3/contracts/structs/compute_node.rs b/crates/shared/src/web3/contracts/structs/compute_node.rs similarity index 100% rename from shared/src/web3/contracts/structs/compute_node.rs rename to crates/shared/src/web3/contracts/structs/compute_node.rs diff --git a/shared/src/web3/contracts/structs/compute_pool.rs b/crates/shared/src/web3/contracts/structs/compute_pool.rs similarity index 100% rename from shared/src/web3/contracts/structs/compute_pool.rs rename to crates/shared/src/web3/contracts/structs/compute_pool.rs diff --git a/shared/src/web3/contracts/structs/compute_provider.rs b/crates/shared/src/web3/contracts/structs/compute_provider.rs similarity index 100% rename from shared/src/web3/contracts/structs/compute_provider.rs rename to crates/shared/src/web3/contracts/structs/compute_provider.rs diff --git a/shared/src/web3/contracts/structs/mod.rs b/crates/shared/src/web3/contracts/structs/mod.rs similarity index 100% rename from shared/src/web3/contracts/structs/mod.rs rename to crates/shared/src/web3/contracts/structs/mod.rs diff --git a/shared/src/web3/mod.rs b/crates/shared/src/web3/mod.rs similarity index 100% rename from shared/src/web3/mod.rs rename to crates/shared/src/web3/mod.rs diff --git a/shared/src/web3/wallet.rs b/crates/shared/src/web3/wallet.rs similarity index 100% rename from shared/src/web3/wallet.rs rename to crates/shared/src/web3/wallet.rs diff --git a/validator/Cargo.toml b/crates/validator/Cargo.toml similarity index 100% rename from validator/Cargo.toml rename to crates/validator/Cargo.toml diff --git a/validator/Dockerfile b/crates/validator/Dockerfile similarity index 100% rename from validator/Dockerfile rename to crates/validator/Dockerfile diff --git a/validator/README.md b/crates/validator/README.md similarity index 100% rename from validator/README.md rename to crates/validator/README.md diff --git a/validator/makefile b/crates/validator/makefile similarity index 100% rename from validator/makefile rename to crates/validator/makefile diff --git a/validator/src/main.rs b/crates/validator/src/main.rs similarity index 100% rename from validator/src/main.rs rename to crates/validator/src/main.rs diff --git a/validator/src/store/mod.rs b/crates/validator/src/store/mod.rs similarity index 100% rename from validator/src/store/mod.rs rename to crates/validator/src/store/mod.rs diff --git a/validator/src/store/redis.rs b/crates/validator/src/store/redis.rs similarity index 100% rename from validator/src/store/redis.rs rename to crates/validator/src/store/redis.rs diff --git a/validator/src/validators/hardware.rs b/crates/validator/src/validators/hardware.rs similarity index 100% rename from validator/src/validators/hardware.rs rename to crates/validator/src/validators/hardware.rs diff --git a/validator/src/validators/hardware_challenge.rs b/crates/validator/src/validators/hardware_challenge.rs similarity index 100% rename from validator/src/validators/hardware_challenge.rs rename to crates/validator/src/validators/hardware_challenge.rs diff --git a/validator/src/validators/mod.rs b/crates/validator/src/validators/mod.rs similarity index 100% rename from validator/src/validators/mod.rs rename to crates/validator/src/validators/mod.rs diff --git a/validator/src/validators/synthetic_data.rs b/crates/validator/src/validators/synthetic_data.rs similarity index 100% rename from validator/src/validators/synthetic_data.rs rename to crates/validator/src/validators/synthetic_data.rs diff --git a/worker/.gitignore b/crates/worker/.gitignore similarity index 100% rename from worker/.gitignore rename to crates/worker/.gitignore diff --git a/worker/Cargo.toml b/crates/worker/Cargo.toml similarity index 100% rename from worker/Cargo.toml rename to crates/worker/Cargo.toml diff --git a/worker/README.md b/crates/worker/README.md similarity index 100% rename from worker/README.md rename to crates/worker/README.md diff --git a/worker/scripts/install.sh b/crates/worker/scripts/install.sh similarity index 100% rename from worker/scripts/install.sh rename to crates/worker/scripts/install.sh diff --git a/worker/scripts/uninstall.sh b/crates/worker/scripts/uninstall.sh similarity index 100% rename from worker/scripts/uninstall.sh rename to crates/worker/scripts/uninstall.sh diff --git a/worker/src/api/mod.rs b/crates/worker/src/api/mod.rs similarity index 100% rename from worker/src/api/mod.rs rename to crates/worker/src/api/mod.rs diff --git a/worker/src/api/routes/challenge.rs b/crates/worker/src/api/routes/challenge.rs similarity index 100% rename from worker/src/api/routes/challenge.rs rename to crates/worker/src/api/routes/challenge.rs diff --git a/worker/src/api/routes/invite.rs b/crates/worker/src/api/routes/invite.rs similarity index 100% rename from worker/src/api/routes/invite.rs rename to crates/worker/src/api/routes/invite.rs diff --git a/worker/src/api/routes/mod.rs b/crates/worker/src/api/routes/mod.rs similarity index 100% rename from worker/src/api/routes/mod.rs rename to crates/worker/src/api/routes/mod.rs diff --git a/worker/src/api/routes/task.rs b/crates/worker/src/api/routes/task.rs similarity index 100% rename from worker/src/api/routes/task.rs rename to crates/worker/src/api/routes/task.rs diff --git a/worker/src/api/routes/types.rs b/crates/worker/src/api/routes/types.rs similarity index 100% rename from worker/src/api/routes/types.rs rename to crates/worker/src/api/routes/types.rs diff --git a/worker/src/api/server.rs b/crates/worker/src/api/server.rs similarity index 100% rename from worker/src/api/server.rs rename to crates/worker/src/api/server.rs diff --git a/worker/src/checks/hardware/gpu.rs b/crates/worker/src/checks/hardware/gpu.rs similarity index 100% rename from worker/src/checks/hardware/gpu.rs rename to crates/worker/src/checks/hardware/gpu.rs diff --git a/worker/src/checks/hardware/hardware_check.rs b/crates/worker/src/checks/hardware/hardware_check.rs similarity index 100% rename from worker/src/checks/hardware/hardware_check.rs rename to crates/worker/src/checks/hardware/hardware_check.rs diff --git a/worker/src/checks/hardware/interconnect.rs b/crates/worker/src/checks/hardware/interconnect.rs similarity index 100% rename from worker/src/checks/hardware/interconnect.rs rename to crates/worker/src/checks/hardware/interconnect.rs diff --git a/worker/src/checks/hardware/memory.rs b/crates/worker/src/checks/hardware/memory.rs similarity index 100% rename from worker/src/checks/hardware/memory.rs rename to crates/worker/src/checks/hardware/memory.rs diff --git a/worker/src/checks/hardware/mod.rs b/crates/worker/src/checks/hardware/mod.rs similarity index 100% rename from worker/src/checks/hardware/mod.rs rename to crates/worker/src/checks/hardware/mod.rs diff --git a/worker/src/checks/hardware/storage.rs b/crates/worker/src/checks/hardware/storage.rs similarity index 100% rename from worker/src/checks/hardware/storage.rs rename to crates/worker/src/checks/hardware/storage.rs diff --git a/worker/src/checks/issue.rs b/crates/worker/src/checks/issue.rs similarity index 100% rename from worker/src/checks/issue.rs rename to crates/worker/src/checks/issue.rs diff --git a/worker/src/checks/mod.rs b/crates/worker/src/checks/mod.rs similarity index 100% rename from worker/src/checks/mod.rs rename to crates/worker/src/checks/mod.rs diff --git a/worker/src/checks/software/docker.rs b/crates/worker/src/checks/software/docker.rs similarity index 100% rename from worker/src/checks/software/docker.rs rename to crates/worker/src/checks/software/docker.rs diff --git a/worker/src/checks/software/mod.rs b/crates/worker/src/checks/software/mod.rs similarity index 100% rename from worker/src/checks/software/mod.rs rename to crates/worker/src/checks/software/mod.rs diff --git a/worker/src/checks/software/port.rs b/crates/worker/src/checks/software/port.rs similarity index 100% rename from worker/src/checks/software/port.rs rename to crates/worker/src/checks/software/port.rs diff --git a/worker/src/checks/software/software_check.rs b/crates/worker/src/checks/software/software_check.rs similarity index 100% rename from worker/src/checks/software/software_check.rs rename to crates/worker/src/checks/software/software_check.rs diff --git a/worker/src/cli/command.rs b/crates/worker/src/cli/command.rs similarity index 100% rename from worker/src/cli/command.rs rename to crates/worker/src/cli/command.rs diff --git a/worker/src/cli/mod.rs b/crates/worker/src/cli/mod.rs similarity index 100% rename from worker/src/cli/mod.rs rename to crates/worker/src/cli/mod.rs diff --git a/worker/src/console/console_logger.rs b/crates/worker/src/console/console_logger.rs similarity index 100% rename from worker/src/console/console_logger.rs rename to crates/worker/src/console/console_logger.rs diff --git a/worker/src/console/mod.rs b/crates/worker/src/console/mod.rs similarity index 100% rename from worker/src/console/mod.rs rename to crates/worker/src/console/mod.rs diff --git a/worker/src/docker/docker_manager.rs b/crates/worker/src/docker/docker_manager.rs similarity index 100% rename from worker/src/docker/docker_manager.rs rename to crates/worker/src/docker/docker_manager.rs diff --git a/worker/src/docker/mod.rs b/crates/worker/src/docker/mod.rs similarity index 100% rename from worker/src/docker/mod.rs rename to crates/worker/src/docker/mod.rs diff --git a/worker/src/docker/service.rs b/crates/worker/src/docker/service.rs similarity index 100% rename from worker/src/docker/service.rs rename to crates/worker/src/docker/service.rs diff --git a/worker/src/docker/state.rs b/crates/worker/src/docker/state.rs similarity index 100% rename from worker/src/docker/state.rs rename to crates/worker/src/docker/state.rs diff --git a/worker/src/docker/taskbridge/bridge.rs b/crates/worker/src/docker/taskbridge/bridge.rs similarity index 100% rename from worker/src/docker/taskbridge/bridge.rs rename to crates/worker/src/docker/taskbridge/bridge.rs diff --git a/worker/src/docker/taskbridge/file_handler.rs b/crates/worker/src/docker/taskbridge/file_handler.rs similarity index 100% rename from worker/src/docker/taskbridge/file_handler.rs rename to crates/worker/src/docker/taskbridge/file_handler.rs diff --git a/worker/src/docker/taskbridge/mod.rs b/crates/worker/src/docker/taskbridge/mod.rs similarity index 100% rename from worker/src/docker/taskbridge/mod.rs rename to crates/worker/src/docker/taskbridge/mod.rs diff --git a/worker/src/main.rs b/crates/worker/src/main.rs similarity index 100% rename from worker/src/main.rs rename to crates/worker/src/main.rs diff --git a/worker/src/metrics/mod.rs b/crates/worker/src/metrics/mod.rs similarity index 100% rename from worker/src/metrics/mod.rs rename to crates/worker/src/metrics/mod.rs diff --git a/worker/src/metrics/store.rs b/crates/worker/src/metrics/store.rs similarity index 100% rename from worker/src/metrics/store.rs rename to crates/worker/src/metrics/store.rs diff --git a/worker/src/operations/compute_node.rs b/crates/worker/src/operations/compute_node.rs similarity index 100% rename from worker/src/operations/compute_node.rs rename to crates/worker/src/operations/compute_node.rs diff --git a/worker/src/operations/heartbeat/mod.rs b/crates/worker/src/operations/heartbeat/mod.rs similarity index 100% rename from worker/src/operations/heartbeat/mod.rs rename to crates/worker/src/operations/heartbeat/mod.rs diff --git a/worker/src/operations/heartbeat/service.rs b/crates/worker/src/operations/heartbeat/service.rs similarity index 100% rename from worker/src/operations/heartbeat/service.rs rename to crates/worker/src/operations/heartbeat/service.rs diff --git a/worker/src/operations/mod.rs b/crates/worker/src/operations/mod.rs similarity index 100% rename from worker/src/operations/mod.rs rename to crates/worker/src/operations/mod.rs diff --git a/worker/src/operations/provider.rs b/crates/worker/src/operations/provider.rs similarity index 100% rename from worker/src/operations/provider.rs rename to crates/worker/src/operations/provider.rs diff --git a/worker/src/services/discovery.rs b/crates/worker/src/services/discovery.rs similarity index 100% rename from worker/src/services/discovery.rs rename to crates/worker/src/services/discovery.rs diff --git a/worker/src/services/mod.rs b/crates/worker/src/services/mod.rs similarity index 100% rename from worker/src/services/mod.rs rename to crates/worker/src/services/mod.rs diff --git a/worker/src/state/mod.rs b/crates/worker/src/state/mod.rs similarity index 100% rename from worker/src/state/mod.rs rename to crates/worker/src/state/mod.rs diff --git a/worker/src/state/system_state.rs b/crates/worker/src/state/system_state.rs similarity index 100% rename from worker/src/state/system_state.rs rename to crates/worker/src/state/system_state.rs diff --git a/worker/src/utils/logging.rs b/crates/worker/src/utils/logging.rs similarity index 100% rename from worker/src/utils/logging.rs rename to crates/worker/src/utils/logging.rs diff --git a/worker/src/utils/mod.rs b/crates/worker/src/utils/mod.rs similarity index 100% rename from worker/src/utils/mod.rs rename to crates/worker/src/utils/mod.rs