Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - alex-bene/jz-cli: CLI helper for Jean Zay SLURM cluster · GitHub
Skip to content

Repository files navigation

jz-cli

pre-commit.ci statusDevelopment StatusPython 3.8+RuffLicense: MIT

A command-line interface (CLI) helper for the Jean Zay SLURM cluster at IDRIS.

This typer-based CLI simplifies common tasks such as syncing files, managing SSH connections, and interacting with the SLURM scheduler and IDRIS-specific commands.

Features

  • File Synchronization: Sync your local project directory with the Jean Zay cluster using rsync.
  • Persistent SSH Connections: Maintain a persistent SSH connection for faster access and command execution.
  • HTTP Proxies Over SSH: Expose local HTTP endpoints that relay requests to services running on Jean Zay compute nodes.
  • SCRATCH Timestamp Renewal: Refresh timestamps under your remote $SCRATCH.
  • SLURM Job Management: View your job queue and cancel jobs.
  • IDRIS Resource Management: Check your resource allocations, project status, and disk quotas.

Installation

  1. Install the dependencies:

    Install with uv (recommended; installs it in an isolated environment).

    uv tool install --python 3.12 git+https://github.com/alex-bene/jz-cli/

    or with pip

    pip install git+https://github.com/alex-bene/jz-cli/
  2. Run the setup:

    jz setup

    This will prompt you for your Jean Zay username and account id. SSH commands use the configured remote_user as the SSH target, and sync commands use it for rsync destinations.

Usage

The jz CLI has several subcommands, each with its own set of options.

jz sync

Sync a local directory to the Jean Zay cluster.

# Sync the current directory
jz sync
# Sync a specific directory
jz sync /path/to/your/project
# Exclude certain files or directories
jz sync -e ".env" -e "data/"# See more options
jz sync --help

jz ssh

Manage the persistent SSH connection.

# Start the master connection
jz ssh start
# Check the status of the connection
jz ssh status
# Run a command on the remote server
jz ssh run "ls -l"# Stop the master connection
jz ssh stop

jz proxy

Expose a local HTTP endpoint that relays requests over ordinary SSH to a service running on a Jean Zay compute node.

# Expose a generic HTTP service running on the compute node
jz proxy serve --job-id 123456 --remote-port 8080 --local-port 8000
# Restrict the proxy to a subset of paths
jz proxy serve --node jzxh033 --remote-port 8080 --allow-prefix /api/
# Target a remote host other than localhost on the compute node
jz proxy serve --node jzxh033 --remote-host 10.0.0.12 --remote-port 8080
# Allow only GET and POST through the generic proxy
jz proxy serve --node jzxh033 --remote-port 8080 --allow-method GET --allow-method POST
# Use the OpenAI-specific wrapper for vLLM or another OpenAI-compatible server
jz proxy openai --job-name vllm-serve --remote-port 8888 --local-port 8000

Notes:

  • jz proxy serve is a generic HTTP proxy. It is not a raw TCP tunnel.
  • Use exactly one of --node, --job-id, or --job-name.
  • --allow-method is repeatable. If omitted, all methods are allowed.
  • --allow-prefix is repeatable. If omitted, all paths are allowed.
  • jz proxy openai targets localhost on the compute node, allows only GET and POST, only forwards /v1/ and /health, and rejects requests with "stream": true.
  • Every proxy also exposes a local health check at /_jz/health.
  • This avoids SSH port forwarding, which Jean Zay disables.
  • --job-id is safer than --job-name if multiple similarly named jobs may be running.

jz scratch

Refresh timestamps under your remote $SCRATCH.

# Run one immediate renewal
jz scratch renew

jz scratch renew connects over SSH, verifies that $SCRATCH is set and points to a remote directory, then runs touch -c on each file and directory below it.

jz slurm

Interact with the SLURM scheduler.

# Show your job queue
jz slurm queue
# Cancel a specific job
jz slurm cancel 12345
# Cancel all your jobs
jz slurm cancel --all

jz idris

Use IDRIS-specific commands.

# Check your resource allocations
jz idris allocations
# View your projects
jz idris projects
# Check your resource consumption
jz idris consumption
# Check your disk quota
jz idris disk-quota

jz config

Manage the CLI configuration.

# Show the current configuration
jz config show
# Show or set your remote_user
jz config remote-user
jz config remote-user --set my-new-username

Development

To contribute to this project, please ensure you have uv installed.

  1. Clone the repository:

    git clone https://github.com/alex-bene/jz-cli.git
    cd jz-cli
  2. Install dependencies and pre-commit hooks:

    uv sync
    uv run pre-commit install
  3. Run checks manually (optional):

    uv run ruff check
    uv run ruff format

This project uses Ruff for linting and formatting. We use pre-commit hooks to ensure code quality.

  • Local: Hooks run before every commit (requires pre-commit install).
  • GitHub Actions: Runs on every push to auto-fix issues on all branches.
  • pre-commit.ci: Runs on every push to check code quality (fixes are handled by the GitHub Action).

License

This project is licensed under the MIT License.

About

CLI helper for Jean Zay SLURM cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages