Linode
@craftquest/linodev2026.09.18.1
Security Notice
This extension includes AI agent skills that can modify AI assistant behavior. Review the skill files before installing.
01README
Provision and operate Linode (Akamai) infrastructure from swamp — compute instances with boot/shutdown/reboot/wait, Cloud Firewalls with rule and device management, Block Storage volumes with attach/detach/resize, profile SSH keys, and a regions/types/images catalog with pricing. Label-addressed state, idempotent create and delete, confirmation-gated instance and volume deletes. Pure HTTPS, token from your vault.
02Models
@craftquest/linode/instancesv2026.09.18.1instances.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token | string | Linode personal access token (vault-supplied); falls back to LINODE_TOKEN |
| label | string | Instance label, unique on the account (3-64 chars); also the state name |
| region | string | Region ID, e.g. us-east, eu-central |
| type | string | Plan/type ID, e.g. g6-nanode-1, g6-standard-2 (see catalog list_types) |
| image | string | Image ID to deploy, e.g. linode/ubuntu24.04 |
| root_pass | string | Root password (vault-supplied). Optional when authorized_keys is set |
| authorized_keys | array | Public SSH keys (key text) appended to root's authorized_keys |
| authorized_users | array | Linode usernames whose profile SSH keys are installed for root |
| tags | array | Tags applied to the instance |
| private_ip | boolean | Also allocate a private IPv4 |
| backups_enabled | boolean | Enable the paid Backup service |
| booted | boolean | Boot after provisioning |
| firewall_id? | number | Cloud Firewall ID to attach at creation |
| stackscript_id? | number | StackScript to run on first boot |
| stackscript_data | record | StackScript UDF values |
| user_data | string | cloud-init user data (plain text; base64-encoded for the API) |
| watchdog_enabled? | boolean | Lassie shutdown watchdog (update only) |
fn boot(config_id?: number)
Boot the stored instance (POST /boot)
| Argument | Type | Description |
|---|---|---|
| config_id? | number | Configuration profile to boot; defaults to the only/last-booted one |
fn shutdown()
Shut the stored instance down (POST /shutdown)
fn reboot(config_id?: number)
Reboot the stored instance (POST /reboot)
| Argument | Type | Description |
|---|---|---|
| config_id? | number | Configuration profile to boot; defaults to the only/last-booted one |
fn wait(status: string, timeout_seconds: number, interval_seconds: number)
Poll until the stored instance reaches the target status (default running) and refresh state
| Argument | Type | Description |
|---|---|---|
| status | string | Target status: running, offline, ... (comma-separate to accept several) |
| timeout_seconds | number | |
| interval_seconds | number |
Resources
state(infinite)— Instance state, one resource per instance named by label
listing(infinite)— Summary of the most recent list call
@craftquest/linode/firewallsv2026.09.18.1firewalls.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token | string | Linode personal access token (vault-supplied); falls back to LINODE_TOKEN |
| label | string | Firewall label (3-32 chars); also the state name |
| tags | array | |
| inbound_policy | enum | Default for inbound traffic not matched by a rule |
| outbound_policy | enum | Default for outbound traffic not matched by a rule |
| inbound | array | Inbound rules, first match wins |
| outbound | array | Outbound rules, first match wins |
| linodes | array | Linode instance IDs to attach at creation |
| status? | enum | Update only |
fn update_rules()
Replace the stored firewall's entire inbound/outbound rule sets and policies with the global arguments (PUT /rules)
fn list_devices()
Fetch the entities attached to the stored firewall and record them in state
fn attach(linode_id: number)
Attach a Linode instance to the stored firewall (no-op if already attached)
| Argument | Type | Description |
|---|---|---|
| linode_id | number | Linode instance ID |
fn detach(linode_id: number)
Detach a Linode instance from the stored firewall (no-op if not attached)
| Argument | Type | Description |
|---|---|---|
| linode_id | number | Linode instance ID |
Resources
state(infinite)— Firewall state (rules and devices), one resource per firewall named by label
listing(infinite)— Summary of the most recent list call
@craftquest/linode/volumesv2026.09.18.1volumes.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token | string | Linode personal access token (vault-supplied); falls back to LINODE_TOKEN |
| label | string | Volume label (1-32 chars); also the state name |
| size | number | Size in GB (10-16384) |
| region | string | Region ID; required unless linode_id is set (then the Linode's region is used) |
| linode_id? | number | Attach to this Linode at creation |
| config_id? | number | Configuration profile to attach to (requires linode_id) |
| tags | array | |
| encryption? | enum | Volume encryption (default enabled where supported) |
fn attach(linode_id: number, config_id?: number, persist_across_boots: boolean)
Attach the stored volume to a Linode (no-op if already attached to it)
| Argument | Type | Description |
|---|---|---|
| linode_id | number | Linode instance to attach to (same region) |
| config_id? | number | |
| persist_across_boots | boolean |
fn detach(timeout_seconds: number)
Detach the stored volume from whatever Linode it is attached to and wait until Linode reports it free (no-op if detached)
| Argument | Type | Description |
|---|---|---|
| timeout_seconds | number | How long to wait for Linode to finish detaching |
fn resize(size: number)
Grow the stored volume (POST /resize); volumes cannot shrink
| Argument | Type | Description |
|---|---|---|
| size | number | New size in GB; must be larger than the current size |
fn wait(status: string, timeout_seconds: number, interval_seconds: number)
Poll until the stored volume reaches the target status (default active) and refresh state
| Argument | Type | Description |
|---|---|---|
| status | string | Target status (comma-separate to accept several) |
| timeout_seconds | number | |
| interval_seconds | number |
Resources
state(infinite)— Volume state, one resource per volume named by label
listing(infinite)— Summary of the most recent list call
@craftquest/linode/ssh_keysv2026.09.18.1ssh_keys.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token | string | Linode personal access token (vault-supplied); falls back to LINODE_TOKEN |
| label | string | Key label (max 64 chars); also the state name |
| ssh_key | string | Public key text (ssh-ed25519 ..., ssh-rsa ..., ecdsa-sha2-nistp...) |
Resources
state(infinite)— SSH key state, one resource per key named by label
listing(infinite)— Summary of the most recent list call
@craftquest/linode/catalogv2026.09.18.1catalog.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token | string | Linode personal access token (vault-supplied); falls back to LINODE_TOKEN |
fn list_regions(filter?: string)
Fetch all regions into the 'regions' resource
| Argument | Type | Description |
|---|---|---|
| filter? | string | Optional X-Filter JSON, e.g. {"class":"standard"} |
fn list_types(filter?: string)
Fetch all instance types with pricing into the 'types' resource
| Argument | Type | Description |
|---|---|---|
| filter? | string | Optional X-Filter JSON, e.g. {"class":"standard"} |
fn list_images(filter?: string, public_only: boolean)
Fetch images into the 'images' resource (public, non-deprecated by default)
| Argument | Type | Description |
|---|---|---|
| filter? | string | Optional X-Filter JSON, e.g. {"vendor":"Ubuntu"} |
| public_only | boolean | Only public linode/* images (skips deprecated ones too) |
Resources
regions(infinite)— Available regions
types(infinite)— Instance types (plans) with hourly/monthly list prices in USD
images(infinite)— Deployable images
03Skills
linode1 file
04Stats
A
100 / 100
Downloads
0
Archive size
34.6 KB
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned
05Platforms
06Labels