Manage Your Servers
Section titled “Manage Your Servers”Hoody rents you physical machines and provisions them automatically, the way a VPS provider provisions virtual machines. Containers have no per-unit cost. Once a server exists, you can create as many as its capacity allows.
The server model
Section titled “The server model”Most hosting makes you pick one or the other: a VPS provisions in minutes but runs on shared hardware, and bare metal gives you the physical machine but takes days to set up. Hoody servers are physical machines that provision automatically.
- Bare metal. A rented server is the whole physical machine, with no other tenant’s workload on it. Every core, byte, and disk is yours.
- Automated provisioning. Each listing shows its own estimated setup time; in-stock machines are ready shortly after purchase.
- Duration-based pricing. Rentals start at one day, and longer periods get automatic discounts.
- Worldwide datacenters. Servers are available in several regions.
- Container density. One server hosts hundreds of isolated containers.
VPS hosting charges per virtual machine, so every new environment adds to the bill. Renting one physical server inverts that: the server is the recurring cost, and the containers on it are not metered.
Traditional VPS: Hoody Bare Metal:Per-VM monthly fee One server rentalMultiple VMs needed Unlimited containersExpensive at scale Cost-effective scalingThe free tier
Section titled “The free tier”Eligible accounts can claim a free server while free-tier capacity is available. It is a slice of a shared machine, not a dedicated box: a real container host with hard resource caps, and it has no rental expiry.
| Free slice | Rented bare metal | |
|---|---|---|
| Security | Shared host: your containers are isolated by their own bridge and an unprivileged user namespace, but the kernel and the hardware are shared with other tenants | The whole machine is yours: no other tenants on the hardware, and no one else’s workload shares your kernel |
| Containers | 10 by default | No fixed cap unless the operator sets one |
| Snapshots per container | 10 | 1000 |
| Network | 100 Mbit/s per direction | The machine’s full link |
| Swap | None | Machine-dependent |
| Proxy aliases | 20 | 5000 |
| CPU / RAM | Shared compute, no per-slice figure | The whole machine |
| Disk | A per-slice quota set by the operator | The machine’s disks |
| Expiry | Never | Rental period, then a hold |
That security row is the main reason to move off the free tier. Containers are unprivileged system containers, not virtual machines, so every container on a host shares one kernel. On a free slice that kernel is shared with strangers; on a machine rented to you, everything on the hardware answers to you alone. See Security & Permissions, Layer 3 for what that changes and what it does not. Disk encryption is not part of that gap: every Hoody host runs LUKS full-disk encryption, free slice or rented metal alike.
Managed hosts
Section titled “Managed hosts”You control the containers; Hoody manages the host. On traditional bare metal you install and maintain the operating system yourself. On a Hoody server you never touch it, and there is no SSH access to the physical machine.
Hoody manages:
- Host operating system (cannot be modified or customized)
- Full-disk encryption (LUKS, always on). The key is held off the machine and supplied at boot, so a stolen or seized server is ciphertext.
- Container runtime and infrastructure
- Security updates and patches
- Hardware health monitoring
- Platform service updates
- Automatic failover and recovery
You control:
- All containers and their configurations
- Container OS choices and customization
- Network rules and firewall settings
- Storage organization and shares
- Resource allocation across containers
That split is what removes the maintenance work. Security updates are applied for you, every server runs a compatible platform version, performance stays consistent across servers, and Hoody tunes the container runtime. You get the isolation and performance of a dedicated machine without having to operate one.
The rental workflow
Section titled “The rental workflow”Step 1: Browse the marketplace
Section titled “Step 1: Browse the marketplace”The marketplace lists in-stock bare metal servers across multiple datacenters. Filter by:
- Location (country, region, city)
- Specifications (CPU, RAM, storage)
- Pricing tiers (duration-based discounts)
See: Rent Servers →
Step 2: Rent a server
Section titled “Step 2: Rent a server”Renting starts provisioning, and the server is production-ready as soon as provisioning completes. Because it is fully automated, there is no manual setup, no hardware configuration to pick, and no wait measured in weeks.
Rental periods are flexible and carry no commitment contract. Nothing auto-renews: a rental simply ends at rental_end.
Step 3: Group servers into pools
Section titled “Step 3: Group servers into pools”Pools group servers for team access. Your personal servers sit in the default pool; custom pools hold shared team servers with role-based access.
See: Share Servers →
Step 4: Create containers
Section titled “Step 4: Create containers”Containers carry no per-container charge, so the server’s capacity is the only limit. That capacity depends on:
- Container resource requirements (CPU, RAM, storage)
- Workload types (lightweight or heavy)
- Server specifications, which vary by marketplace offering
- Dynamic resource sharing across containers
Marketplace listings show server specs, which is what you use to estimate container capacity.
API Endpoints Summary
Section titled “API Endpoints Summary”Server management uses these APIs:
GET /api/v1/pools- List your pools and their serversPOST /api/v1/pools- Create pools for team organizationGET /api/v1/servers/available- Browse marketplacePOST /api/v1/servers/{id}/rent- Rent a server
GET /api/v1/servers/{serverId}/available-commands- List executable commandsPOST /api/v1/servers/{serverId}/execute-command- Run commands on server
- Manage balance for server rentals
- View transaction history
- Handle payments
Dedicated hardware
Section titled “Dedicated hardware”Single tenancy
Section titled “Single tenancy”On a rented server, containers run on a physical machine allocated to you alone. There is no shared hypervisor, no virtual partition between you and another tenant, and nothing running on the box that you did not start, so there is no shared infrastructure layer you have to trust.
That matters most when you cannot fully audit what you are running:
- AI-generated code
- Client data that has to stay separated (agencies, consultancies)
- Compliance requirements such as GDPR and HIPAA, where single-tenant hardware makes the story straightforward
Performance predictability
Section titled “Performance predictability”A rented machine has no noisy neighbors. All of its CPU, RAM, and storage is yours, the full disk I/O bandwidth is yours, and there is no resource contention to make performance vary between runs.
Cost at scale
Section titled “Cost at scale”For container workloads, per-VM pricing is what gets expensive: an agency running several environments for each of several clients pays for every one of them. A few servers with many containers on each replaces that with a fixed rental cost.
Agency with multiple clients, multiple environments each
Traditional VPS:Separate VM per environment = High monthly costs per client
Hoody Bare Metal:Few servers, unlimited containers = Massive cost reductionPlus: Unlimited additional containers for experimentsProvisioning time
Section titled “Provisioning time”Most bare-metal providers take one to seven days to provision a machine, with manual configuration and OS installation, a long-term contract, and setup work left to you. A Hoody listing shows its own estimated setup time, from rent to ready. Provisioning is fully automated, the server is production-ready when it completes, and nothing auto-renews: a rental simply ends at rental_end.
Because provisioning finishes without a human in the loop, an AI agent can rent a server through the API and use it in the same session:
// An agent turns a chat request into infrastructureUser: "I need a staging environment for client demo"
AI: *Rents server via API, waits for provisioning to complete* "Staging server ready: https://client-demo.hoody.com" "Containers deployed: frontend, backend, database" "Mock data populated. Demo URL: ..."Server locations
Section titled “Server locations”Hoody servers run in datacenters worldwide. Browse current locations and availability via the Servers API marketplace.
- Place servers closest to your users to minimize latency
- Check data residency requirements before choosing a region
- Use multiple regions for geographic redundancy
If the region you need is not listed, contact support for a custom datacenter request, or check the marketplace for what is currently available.
Server and pool listings
Section titled “Server and pool listings”# List all your pools and their servershoody pools list
# Get details for a specific poolhoody pools get $POOL_ID
# Browse marketplace for new servershoody servers marketplace
# Execute a command on your serverhoody servers exec $SERVER_ID \ --command-slug check-uptime \ --waitimport { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.com', token: process.env.HOODY_TOKEN });
// List all poolsconst pools = await client.api.pools.list();
// Get pool detailsconst pool = await client.api.pools.get(poolId);
// Browse marketplaceconst available = await client.api.serverRental.browse();
// Execute a server commandconst result = await client.api.serverCommands.execute(serverId, { command_slug: 'check-uptime', wait: true,});# List all poolscurl "https://api.hoody.com/api/v1/pools" \ -H "Authorization: Bearer $HOODY_TOKEN"
# Get pool detailscurl "https://api.hoody.com/api/v1/pools/$POOL_ID" \ -H "Authorization: Bearer $HOODY_TOKEN"
# Browse marketplacecurl "https://api.hoody.com/api/v1/servers/available" \ -H "Authorization: Bearer $HOODY_TOKEN"
# Execute a server commandcurl -X POST "https://api.hoody.com/api/v1/servers/$SERVER_ID/execute-command" \ -H "Authorization: Bearer $HOODY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"command_slug": "check-uptime", "wait": true}'One request, one link
cURL runs inside your container and can wrap any HTTP request into a single GET URL. The call stops being something you need a client for and becomes something you can paste into a browser, send in a chat, bookmark, schedule with cron, or drop into a no-code tool.
Nothing is installed on the machine that opens it. The link does carry whatever credentials the call needs, so treat it as you would treat those credentials.
Slashes, colons and braces pass through as they are. The one character you must
encode is an & inside a value, which happens when the wrapped URL
carries its own query string. Left raw it ends the value early, and the rest is
read as cURL's own parameters, so you get a 200 on a request you did
not make.
How the wrapping works Chaining calls into one link Turning a link into a shortcut
List pools, view one pool’s details, browse the marketplace, or run a predefined command on a server.
# List pools
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/pools&method=GET&bearer_token=TOKEN&response=transparent
# Pool details
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/pools/POOL_ID&method=GET&bearer_token=TOKEN&response=transparent
# Browse marketplace
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/servers/available&method=GET&bearer_token=TOKEN&response=transparent
# Execute command
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/servers/SERVER_ID/execute-command&method=POST&bearer_token=TOKEN&json={"command_slug":"check-uptime","wait":true}&response=transparent The link carries a credential and executes with it, so it is as sensitive as the credential itself — and it passes through the cURL service's request log on the way, not just the target's. Share it only where you would share the secret, and prefer a delegated token with minimal permissions and an expiry: see API tokens.
Pool list
Section titled “Pool list”Lists every pool you own or are a member of.
The response shows:
- All pools you have access to (owned or member)
- Your role in each pool (owner or member)
- Number of servers in each pool
- Member count
Pool details
Section titled “Pool details”Returns one pool by ID.
The response includes:
- Complete pool information
- List of all servers assigned to pool
- All pool members and their roles
- Pool settings and quotas
Marketplace listings
Section titled “Marketplace listings”Lists the servers currently available to rent.
Each listing shows server location, specifications, pricing, and availability.
Server commands
Section titled “Server commands”Hoody ships a small catalog of predefined commands for uptime, memory usage, and emergency reboot. Operators can configure the live catalog, so list the commands available on the target server rather than assuming others exist.
Eligibility. Non-platform-admin users can run server commands only on a dedicated physical host that their account actively rents. Free-tier servers and shared hosts are not eligible; attempting execution returns 403. Pool membership does not grant this permission.
Available commands
Section titled “Available commands”Lists the commands the target server accepts.
Filter by:
category- filter commands by their category (e.g.system)risk_level- maximum risk level: low, medium, high, critical
Command execution
Section titled “Command execution”Runs one predefined command on a server.
- Commands are predefined and safe; there is no SSH access to the host
- Risk levels gate dangerous operations
- High-risk commands require confirmation tokens
- Results are returned immediately or via status polling
The shipped catalog is exactly three commands:
- System uptime (
check-uptime) - Memory usage (
check-memory) - Emergency kernel reboot (
kexec-reboot)
Commands that would expose filesystem paths, running processes, service state or network reachability are deliberately not offered. List what your server supports via GET /api/v1/servers/{serverId}/available-commands.
Server monitoring
Section titled “Server monitoring”Resource usage
Section titled “Resource usage”CPU, RAM, storage, and network usage are visible:
- In the Hoody dashboard, as graphs
- Through the API, programmatically
- Through server commands for memory only (
check-memory); storage and network reports are not available as server commands
Containers per server
Section titled “Containers per server”- List all containers on a server
- See resource usage per container
- Identify heavy and light workloads
- Rebalance if needed
Rental status
Section titled “Rental status”Track the rental lifecycle:
- Active rental period
- Expiration date
- Days remaining
- Grace period status
Renewal is manual. Monitor the rental through the API or the dashboard, set calendar reminders for the expiration date, and renew before it passes to avoid data loss.
Rental terms
Section titled “Rental terms”Servers can be rented for as little as 1 day, and longer periods get automatic discounts. Available durations vary by marketplace offer, so check the current options when browsing servers.
Terms:
- No long-term contracts
- A grace period after expiration (the hold period)
- Renewal at any point during the hold, with no data loss
- Manual renewal, required before expiration
- No early cancellation and no refund for unused time. A rental runs to
rental_end, enters the hold period, and is then deprovisioned unless you renew.
Payment:
- Deducted from your general balance (see Wallet)
- Billed automatically when the rental starts
- Itemized on an invoice
Use Cases
Section titled “Use Cases”Solo developer
- Rent 1 server for all projects
- Run dozens of containers (personal + client work)
- Each project: dev, staging, prod environments
- AI experimentation playground
Small team (5-10 people)
- Rent 2 servers
- Organize into pools for team access
- Many containers across all team projects
- Shared resources, isolated projects
Digital agency
- Rent multiple servers
- One pool per major client, so no client shares a server with another
- High container density per server
- Per-client cost attribution
Enterprise development
- Rent 10+ servers distributed globally
- Production, staging, development separated
- Hundreds or thousands of containers
- Geographic redundancy and compliance
Best Practices
Section titled “Best Practices”Server selection:
- Start with a mid-tier server and monitor usage for the first month
- Upgrade only when consistently hitting >80% resource usage
- Don’t over-provision speculatively
Organization:
- Use pools to group related servers (team, client, environment)
- Name servers clearly (purpose, location, tier)
- Document which containers run on which servers
Cost management:
- Monitor container density to see whether the server is being used
- Delete unused containers to free resources
- Use snapshots instead of keeping idle containers running
- Consolidate low-usage containers to fewer servers
Security:
- Separate production from development servers
- Use different pools for different clients/teams
- Enable appropriate firewall rules per server
- Rotate credentials regularly
Performance:
- Place latency-sensitive containers on servers closest to users
- Group communicating containers on same server
- Monitor resource usage and rebalance as needed
Useful Questions
Section titled “Useful Questions”How long does server provisioning really take?
Each marketplace listing shows its own estimated setup time, and in-stock machines are ready shortly after purchase. Hoody keeps a pool of ready-to-provision hardware across its datacenters, which is what removes the days-to-weeks wait most bare-metal providers have.
What if I need more than what’s in the marketplace?
Contact support with your requirements (location, specs, quantity). Hoody works with reliable datacenter partners and can provision custom configurations, though it may take longer than an instant marketplace rental.
Can I have servers in multiple regions?
Yes. Rent servers in different locations as needed. Containers on different servers communicate via their public URLs (through Hoody Proxy). Use Realms to isolate API visibility and control across environments, tenants, or automation.
What happens when my rental expires?
You enter a hold period (grace period) where the server remains active but you’re prompted to renew. If you renew during this time, no data is lost. After the hold period, the server is deprovisioned and data is deleted.
Can I move containers between servers?
Yes, through container copy/sync. You can copy or move containers from one server to another, preserving all state, files, and configuration.
How do I know which server a container is running on?
Container URLs include the server identifier. The Hoody dashboard also shows server assignments. You can manage this through the API or UI.
What’s included in server rental cost?
The tier price covers hardware, bandwidth, storage, automated management, updates, monitoring, and support, with no bandwidth overage charges, no storage tiers, and no per-container fee. Some listings additionally carry a one-time setup fee (pricing.setup_fee_cents) charged once when the rental starts and never on renewal; pricing.price_tiers[days].total_first_payment is the full amount debited on that first payment.
Troubleshooting
Section titled “Troubleshooting”Server provisioning takes longer than the listing’s estimate
Cause: High demand in specific datacenter or rare hardware allocation delay
Solution: Check the dashboard for status updates; provisioning may be retrying automatically. If it sits well past the listing’s estimated setup time with no progress, contact support.
Can’t spawn containers on server
Cause: Server still completing post-provisioning setup, or resource exhaustion
Solution: Wait 1-2 more minutes for complete initialization. Check server resource usage in dashboard. If server shows “ready” and resources available but containers won’t spawn, check error logs or contact support.
Server performance degraded
Cause: Too many containers or resource-heavy workloads
Solution: Check resource usage in dashboard. Identify resource-heavy containers. Consider: setting resource limits on specific containers, moving some containers to another server, or upgrading to higher-tier server.
Payment declined during rental
Cause: Insufficient balance or payment method issues
Solution: Add funds to your general balance via Wallet. Ensure payment method is valid and not expired. Rental will retry automatically once balance is sufficient.
Lost access to server after expiration
Cause: Hold period ended, server deprovisioned
Solution: If still within hold period, renew immediately to restore access. If already deprovisioned, server and data are gone. Always set calendar reminders for critical server renewals.
What’s Next
Section titled “What’s Next”- Rent Servers → - Browse the marketplace and provision a machine
- Share Servers → - Organize servers with pools
- Projects & Containers → - What runs on servers
- Server Management API → - Full API reference
- Wallet → - Manage billing and payments