← Back to Skills Marketplace
sorrymaker0624

Bohrium Dev Node Management

by Sorrymaker0624 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ pending
51
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install bohrium-node
Description
Manage Bohrium dev nodes (containers/VMs) via bohr CLI or open.bohrium.com API. Use when: user asks about creating/starting/stopping/deleting dev machines on...
README (SKILL.md)

SKILL: Bohrium Dev Node Management

Overview

Manage dev nodes (container/VM instances) on the Bohrium platform. Prefer bohr CLI; fall back to the API for unsupported operations.

Dev nodes are used for data preparation, compilation, debugging, and post-processing. They support Web Shell and SSH connections.

Authentication

"bohrium-node": {
  "enabled": true,
  "apiKey": "YOUR_ACCESS_KEY",
  "env": { "ACCESS_KEY": "YOUR_ACCESS_KEY" }
}

Prerequisites: Install bohr CLI

# macOS
/bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_mac_curl.sh)"
# Linux
/bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_linux_curl.sh)"
source ~/.bashrc && export PATH="$HOME/.bohrium:$PATH"

List Nodes

bohr node list                  # All nodes (table)
bohr node list --json           # JSON
bohr node list -s               # Running only
bohr node list -p               # Paused only
bohr node list -d               # Pending only
bohr node list -w               # Waiting only
bohr node list -q               # ID and name only

JSON fields: nodeId, nodeName, status (Started/Paused/Pending/Waiting), cpu/memory/gpu, ip, imageName, cost


Create Node

bohr node create    # Interactive: Project -> Image -> Machine -> Name -> Disk

bohr node create is interactive. For automation, use the API (see below).

Recommended images:

Scenario Image
CPU basic registry.dp.tech/dptech/ubuntu:20.04-py3.10
CPU + Intel MPI registry.dp.tech/dptech/ubuntu:20.04-py3.10-intel2022
GPU basic registry.dp.tech/dptech/ubuntu:20.04-py3.10-cuda11.6
GPU + Intel MPI registry.dp.tech/dptech/ubuntu:20.04-py3.10-intel2022-cuda11.6

Connect to Node

bohr node connect 1431145       # Passwordless SSH via nodeId

Alternative: Web Shell via the Bohrium web UI (auto-login as root), or manual SSH using credentials from the API.


Stop / Delete

bohr node stop 1431145          # Stop (pause billing, data preserved)
bohr node delete 1431145        # Delete (irreversible)

Important: Nodes are billed continuously while running. Stop or delete when not in use.


Storage & Networking

Item Details
System disk Selected at creation (max 100GB); stores OS packages
Personal disk /personal 500GB per user per project; persists after node release
Shared disk /share 1TB per project; read/write for all members
Public ports 50001-50005 open by default
GPU driver v525 default; cannot upgrade
Docker Not supported inside container nodes (security)

Dataset Mounting

Mount datasets when creating a container node; access via path (e.g. /bohr/my-dataset/v1).

  • Adds 2-4s boot delay (regardless of dataset count)
  • Use df -a | grep bohr to view mount points

Boot Time & Image Cache

Scenario Boot time
Cached CPU machine ~20s
Cached GPU machine ~40s
GPU under resource pressure 1-5 min
No cache (new/expired image) 10-30 min (image pull)

Cache rules:

  • Public images have persistent cache
  • Custom images: cache builds in 10-30 min after creation; wait before using
  • Custom images unused for 30 days: cache expires, re-pull required
  • Billing starts from resource allocation, even during image pull

API Supplement (CLI Unsupported)

import os, requests

AK = os.environ.get("ACCESS_KEY", "")
BASE = "https://open.bohrium.com/openapi/v1/node"
HEADERS = {"accessKey": AK}
HEADERS_JSON = {**HEADERS, "Content-Type": "application/json"}

# Programmatic node creation (non-interactive)
r = requests.post(f"{BASE}/add", headers=HEADERS_JSON, json={
    "projectId": 154, "name": "my-node", "imageId": 2168,
    "machineConfig": {"type": 0, "value": 388, "label": "c2_m4_cpu"},
    "diskSize": 20,
})
# Returns: {"code": 0, "data": {"machineId": 1427300}}

# Available resources
r = requests.get(f"{BASE}/resources", headers=HEADERS)
# Returns: {disks, cpuList, gpuList} — value = skuId

# Resource pricing
r = requests.get(f"{BASE}/resources/price", headers=HEADERS,
    params={"skuId": 388, "projectId": 154})
# Returns: {"data": {"price": "0.4"}}  (CNY/hour)

# Node details (includes SSH password)
r = requests.get(f"{BASE}/{machine_id}", headers=HEADERS)
# Returns: {nodeId, nodeName, status, ip, nodeUser, nodePwd, domainName, ...}

# Restart (must stop first)
requests.post(f"{BASE}/restart/{machine_id}", headers=HEADERS)

# Rename
requests.post(f"{BASE}/modify/{machine_id}", headers=HEADERS_JSON,
    json={"name": "new-name"})

# View/bind datasets
r = requests.get(f"{BASE}/ds", headers=HEADERS, params={"nodeId": node_id})
requests.post(f"{BASE}/ds/bind", headers=HEADERS_JSON,
    json={"nodeId": node_id, "datasetId": dataset_id})

Status Codes

status Meaning CLI Display
2 Running Started
-1 Stopped/Released Paused

Quotas

Resource Limit
Nodes 4 per user per project
System disk Max 100GB
Personal disk 500GB per user per project
Shared disk 1TB per project

SSH vs Web Shell Environment

Method Env var source
Web Shell System env + /root/.bashrc
SSH /root/.bashrc only (overwrites globals)

Troubleshooting

Problem Cause Solution
No resource for selected machine Out of stock Try another spec or retry later
record not found Invalid machineId Verify with bohr node list --json
Restart fails Node not stopped bohr node stop first, wait for Paused
nodeId vs machineId Two different IDs CLI uses nodeId; API uses machineId; dataset API uses nodeId
SSH fails Image lacks SSH DockerHub images need manual sshd install
Domain not resolving Stopped >7 days Restart; wait 10-30 min for DNS; use Web Shell meanwhile
Slow terminal VPN/network or browser memory Disable VPN; refresh page
Cannot run Docker Container security Use VM image LBG_Common_v2
Image pulling Cache not ready or expired Wait 10-30 min after build
Capability Tags
requires-sensitive-credentials
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install bohrium-node
  3. After installation, invoke the skill by name or use /bohrium-node
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release
Metadata
Slug bohrium-node
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Bohrium Dev Node Management?

Manage Bohrium dev nodes (containers/VMs) via bohr CLI or open.bohrium.com API. Use when: user asks about creating/starting/stopping/deleting dev machines on... It is an AI Agent Skill for Claude Code / OpenClaw, with 51 downloads so far.

How do I install Bohrium Dev Node Management?

Run "/install bohrium-node" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Bohrium Dev Node Management free?

Yes, Bohrium Dev Node Management is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Bohrium Dev Node Management support?

Bohrium Dev Node Management is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Bohrium Dev Node Management?

It is built and maintained by Sorrymaker0624 (@sorrymaker0624); the current version is v1.0.0.

💬 Comments