Skip to main content

Node Administration Made Intuitive

Project description

NAMI 🌊

Node Access & Manipulation Interface is a simple tool for managing connections to multiple remote instances (particularly GPU servers), with built-in GPU monitoring, file transfer capabilities via rsync/S3, and a template system for common tasks.

Features

  • 🔗 Multi-instance SSH management - Add, list, and connect to remote servers
  • 🌐 Heterogeneous environments - Works across different Linux distros and cloud providers (Vast, AWS, Runpod, etc.)
  • 📊 GPU monitoring - GPU utilization and memory tracking
  • 📁 File transfer - Transfer files between instances directly via rsync or using S3 as intermediary
  • 📜 Template system - Execute pre-configured bash script templates on remote instances
  • ⚙️ Configuration management - Personal and global configuration storage

Installation

pip install -U nami

Quick Start

# Add a remote instance
nami add gpu-box 192.168.1.100 22 --user ubuntu --description "Main GPU server"

# List all instances with GPU status
nami list

# Connect to an instance via SSH  
nami ssh gpu-box

# Run a command on an instance
nami ssh gpu-box "nvidia-smi"

# Transfer files between instances
nami transfer --source_instance local --dest_instance gpu-box --source_path ./data --dest_path ~/data

# Upload files to S3 from an instance
nami to_s3 --source_instance gpu-box --source_path ~/results --dest_path s3://bucket/experiment1/

# Download files from S3 to an instance  
nami from_s3 --dest_instance gpu-box --source_path s3://bucket/dataset/ --dest_path ~/data/

# Execute a template on an instance
nami template gpu-box setup_conda --env_name myenv --python_version 3.9

⚙️ Configuration

NAMI stores its configuration in ~/.nami/:

  • config.yaml - Instance definitions and global settings
  • personal.yaml - User-specific configurations (S3 bucket, AWS profile, etc.)
  • templates/ - Custom bash script templates

🔧 Commands

Instance Management:

# Add a new instance
nami add <name> <host> <port> [--user USER] [--local-port PORT] [--description DESC]

# List all instances with GPU status
nami list

# Remove an instance
nami remove <name>

# Connect via SSH or run a command
nami ssh <instance> [command]

Configuration:

# Set personal config value
nami config set <key> <value>

# Show configuration (all or specific key)
nami config show [key]

File Transfer:

# Transfer files between instances
nami transfer --source_instance SRC --dest_instance DEST \
              --source_path PATH \
              [--dest_path PATH] \
              [--method rsync|s3] \
              [--exclude PATTERNS] \
              [--archive] \
              [--rsync_opts "OPTIONS"]

# Upload to S3
nami to_s3 --source_instance INSTANCE \
           --source_path PATH \
           --dest_path S3_PATH \
           [--exclude PATTERNS] \
           [--archive] \
           [--aws_profile PROFILE]

# Download from S3  
nami from_s3 --dest_instance INSTANCE \
             --source_path S3_PATH \
             --dest_path PATH \
             [--exclude PATTERNS] \
             [--archive] \
             [--aws_profile PROFILE]

Templates:

# Execute a template with variables
nami template <instance> <template_name> [--var1 value1 --var2 value2 ...]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nami_surf-0.1.0.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nami_surf-0.1.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file nami_surf-0.1.0.tar.gz.

File metadata

  • Download URL: nami_surf-0.1.0.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.19

File hashes

Hashes for nami_surf-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d1595ad74b230f1e8632deaf19b2df161777c6114c94af725db51a786696df5f
MD5 83de6bc2298dad54ef507855cb1bf50b
BLAKE2b-256 463d623c441299b13286bfa0db0cebe6df716502e35c333d08e6496347660380

See more details on using hashes here.

File details

Details for the file nami_surf-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nami_surf-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.19

File hashes

Hashes for nami_surf-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbdd5bbc250dd4b91d88a1715cd28fd8dac8213b8168a46962c3ac25b7016650
MD5 873c9aa2cead8fd3857e5a48c0173c04
BLAKE2b-256 67e00b6e6ddac64b67b2809b41a52d69acabfb93e8e65b16abf8cf52308ce61c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page