[[bin]]
name = "runctl"
path = "src/main.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1.0"
[dependencies.aws-sdk-ec2]
version = "1.0"
[dependencies.aws-sdk-ecr]
version = "1.0"
[dependencies.aws-sdk-s3]
version = "1.0"
[dependencies.aws-sdk-ssm]
version = "1.0"
[dependencies.aws-sdk-sts]
version = "1.0"
[dependencies.base64]
version = "0.22"
[dependencies.chrono]
features = ["serde"]
version = "0.4"
[dependencies.clap]
features = ["derive", "env"]
version = "4.5"
[dependencies.comfy-table]
version = "7.1"
[dependencies.console]
version = "0.15"
[dependencies.crossterm]
version = "0.28"
[dependencies.dirs]
version = "5.0"
[dependencies.duct]
version = "0.13"
[dependencies.fastrand]
version = "2.3.0"
[dependencies.flate2]
version = "1.0"
[dependencies.futures]
version = "0.3"
[dependencies.ignore]
version = "0.4"
[dependencies.indicatif]
features = ["rayon"]
version = "0.17"
[dependencies.notify]
version = "6.1"
[dependencies.pathdiff]
version = "0.2"
[dependencies.ratatui]
version = "0.27"
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
features = ["json"]
version = "0.11"
[dependencies.serde]
features = ["derive"]
version = "1.0"
[dependencies.serde_json]
version = "1.0"
[dependencies.shellexpand]
version = "3.1"
[dependencies.ssh2]
version = "0.9"
[dependencies.sysinfo]
version = "0.31"
[dependencies.tar]
version = "0.4"
[dependencies.thiserror]
version = "1.0"
[dependencies.tokio]
features = ["full"]
version = "1.35"
[dependencies.toml]
version = "0.8"
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
features = ["env-filter", "json"]
version = "0.3"
[dependencies.tui-textarea]
version = "0.4"
[dependencies.uuid]
features = ["v4", "serde"]
version = "1.6"
[dependencies.walkdir]
version = "2.4"
[dependencies.which]
version = "5.0"
[dev-dependencies.mockall]
version = "0.13"
[dev-dependencies.mockito]
version = "1.2"
[dev-dependencies.proptest]
version = "1.5"
[dev-dependencies.tempfile]
version = "3.10"
[dev-dependencies.tokio-test]
version = "0.4"
[features]
default = []
e2e = []
[lib]
name = "runctl"
path = "src/lib.rs"
[package]
authors = ["arclabs561 <arclabs561@users.noreply.github.com>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["command-line-utilities", "development-tools"]
description = "ML training orchestration CLI for AWS EC2, RunPod, and local environments"
edition = "2021"
homepage = "https://github.com/arclabs561/runctl"
keywords = ["ml", "training", "aws", "ec2", "orchestration"]
license = "MIT OR Apache-2.0"
name = "runctl"
readme = "README.md"
repository = "https://github.com/arclabs561/runctl"
version = "0.1.1"
[profile.release]
codegen-units = 1
lto = true
opt-level = 3
[[test]]
name = "aws_helpers_tests"
path = "tests/aws_helpers_tests.rs"
[[test]]
name = "aws_module_boundary_tests"
path = "tests/aws_module_boundary_tests.rs"
[[test]]
name = "aws_resources_e2e_test"
path = "tests/aws_resources_e2e_test.rs"
[[test]]
name = "checkpoint_e2e_test"
path = "tests/checkpoint_e2e_test.rs"
[[test]]
name = "checkpoint_s3_e2e_test"
path = "tests/checkpoint_s3_e2e_test.rs"
[[test]]
name = "cli_workflow_e2e_test"
path = "tests/cli_workflow_e2e_test.rs"
[[test]]
name = "code_sync_verification_e2e_test"
path = "tests/code_sync_verification_e2e_test.rs"
[[test]]
name = "command_tests"
path = "tests/command_tests.rs"
[[test]]
name = "complete_training_e2e_test"
path = "tests/complete_training_e2e_test.rs"
[[test]]
name = "comprehensive_workflow_e2e_test"
path = "tests/comprehensive_workflow_e2e_test.rs"
[[test]]
name = "cost_calculation_tests"
path = "tests/cost_calculation_tests.rs"
[[test]]
name = "cost_threshold_e2e_test"
path = "tests/cost_threshold_e2e_test.rs"
[[test]]
name = "data_transfer_property_tests"
path = "tests/data_transfer_property_tests.rs"
[[test]]
name = "data_transfer_tests"
path = "tests/data_transfer_tests.rs"
[[test]]
name = "dependency_installation_e2e_test"
path = "tests/dependency_installation_e2e_test.rs"
[[test]]
name = "docker_e2e_test"
path = "tests/docker_e2e_test.rs"
[[test]]
name = "docker_ebs_workflow_e2e_test"
path = "tests/docker_ebs_workflow_e2e_test.rs"
[[test]]
name = "docker_error_handling_test"
path = "tests/docker_error_handling_test.rs"
[[test]]
name = "ebs_lifecycle_e2e_test"
path = "tests/ebs_lifecycle_e2e_test.rs"
[[test]]
name = "ebs_persistent_test"
path = "tests/ebs_persistent_test.rs"
[[test]]
name = "error_handling_improvements_tests"
path = "tests/error_handling_improvements_tests.rs"
[[test]]
name = "error_handling_tests"
path = "tests/error_handling_tests.rs"
[[test]]
name = "error_message_tests"
path = "tests/error_message_tests.rs"
[[test]]
name = "error_property_tests"
path = "tests/error_property_tests.rs"
[[test]]
name = "error_scenarios_e2e_test"
path = "tests/error_scenarios_e2e_test.rs"
[[test]]
name = "instance_termination_e2e_test"
path = "tests/instance_termination_e2e_test.rs"
[[test]]
name = "integration_concurrent_operations_tests"
path = "tests/integration_concurrent_operations_tests.rs"
[[test]]
name = "integration_lifecycle_tests"
path = "tests/integration_lifecycle_tests.rs"
[[test]]
name = "integration_property_tests"
path = "tests/integration_property_tests.rs"
[[test]]
name = "integration_provider_tests"
path = "tests/integration_provider_tests.rs"
[[test]]
name = "integration_resource_tracking_tests"
path = "tests/integration_resource_tracking_tests.rs"
[[test]]
name = "integration_test"
path = "tests/integration_test.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "local_training_e2e_test"
path = "tests/local_training_e2e_test.rs"
[[test]]
name = "module_unit_tests"
path = "tests/module_unit_tests.rs"
[[test]]
name = "multi_project_tests"
path = "tests/multi_project_tests.rs"
[[test]]
name = "persistent_storage_e2e_test"
path = "tests/persistent_storage_e2e_test.rs"
[[test]]
name = "project_root_tests"
path = "tests/project_root_tests.rs"
[[test]]
name = "property_tests"
path = "tests/property_tests.rs"
[[test]]
name = "provider_test"
path = "tests/provider_test.rs"
[[test]]
name = "resource_cleanup_e2e_test"
path = "tests/resource_cleanup_e2e_test.rs"
[[test]]
name = "resource_safety_e2e_test"
path = "tests/resource_safety_e2e_test.rs"
[[test]]
name = "resource_tracker_property_tests"
path = "tests/resource_tracker_property_tests.rs"
[[test]]
name = "resource_tracker_refresh_tests"
path = "tests/resource_tracker_refresh_tests.rs"
[[test]]
name = "resource_tracker_state_update_tests"
path = "tests/resource_tracker_state_update_tests.rs"
[[test]]
name = "resource_tracker_unit_tests"
path = "tests/resource_tracker_unit_tests.rs"
[[test]]
name = "resource_tracking_e2e_test"
path = "tests/resource_tracking_e2e_test.rs"
[[test]]
name = "resources_utils_tests"
path = "tests/resources_utils_tests.rs"
[[test]]
name = "retry_tests"
path = "tests/retry_tests.rs"
[[test]]
name = "s3_data_transfer_e2e_test"
path = "tests/s3_data_transfer_e2e_test.rs"
[[test]]
name = "s3_test"
path = "tests/s3_test.rs"
[[test]]
name = "safe_cleanup_e2e_test"
path = "tests/safe_cleanup_e2e_test.rs"
[[test]]
name = "safe_cleanup_unit_tests"
path = "tests/safe_cleanup_unit_tests.rs"
[[test]]
name = "spot_interruption_e2e_test"
path = "tests/spot_interruption_e2e_test.rs"
[[test]]
name = "ssh_sync_tests"
path = "tests/ssh_sync_tests.rs"
[[test]]
name = "stateful_property_tests"
path = "tests/stateful_property_tests.rs"
[[test]]
name = "training_error_handling_test"
path = "tests/training_error_handling_test.rs"
[[test]]
name = "training_workflow_e2e_test"
path = "tests/training_workflow_e2e_test.rs"
[[test]]
name = "unit_tests"
path = "tests/unit_tests.rs"