The remote console is the screen and keyboard of your machine, in a browser tab. It works when SSH does not: a server that hangs at boot, a firewall rule that locked you out, a kernel that panics, a Windows login that expired. Nothing needs to be running on the machine itself.
There are two doors, and this guide covers both:
- Remote console — a browser-based console we drive for you. Bare metal and cloud. One click, no credentials to manage. Use this first.
- Management interface access (bare metal only) — temporary, address-locked access to the server's own management controller (IPMI or BMC) with a throwaway login. For hardware the console cannot drive, or when you need the controller's full feature set, such as mounting an installer image over the network.
The one thing that trips people up: a bare-metal console or management session admits exactly one public IP address, the one you give when you open it. Open it from that same connection. A VPN that switched on in between, a phone on mobile data, or an office that leaves through a different address will see a refused connection, not an error message.
Method 1 — In the portal
Bare-metal servers: the remote console
- Log in at amoni.app, open Servers and click the server.
- Click Console in the header, or the Console tab. The same panel opens either way.
- Your public IP is filled in automatically with the address you are browsing from. Check it. If you will open the console from a different network, or a VPN is about to come up, correct it now.
- Leave Console mode on Standard. Switch to Web only if Standard turns out not to work with this server's controller; the troubleshooting section says how to tell.
- Click Launch Console. Preparing the session takes a few seconds.
- The panel turns green with Console session active and a link. Click it; the console opens in a new tab. The line underneath repeats which address the session admits.


The console opens as a Server Console page: the server's name and a Connected badge in the header, a CTRL + ALT + DEL button, and the machine's screen from power-on onwards, BIOS and boot loader included. On most of our hardware the screen is the controller's own viewer running inside that page, with its menu bar (Virtual Media, Macro, Power Control and so on) along the top of the window. The small toolbar on the left belongs to the page itself: keyboard, clipboard, full screen, settings, disconnect.

If the screen is black, the server is probably powered off: use Start in the portal header (see reboot and power), or the viewer's own Power Control menu.
Boot from an installer or rescue image (virtual media)
The console can present an image from our library to the server as if a USB drive or DVD were plugged into it. That is how you run an installer we do not offer as an automated reinstall, boot a live system to repair or copy data, or run a vendor utility. It works whatever state the installed system is in.
- In the viewer's menu bar, open Virtual Media → Virtual Storage.
- On the Device1 tab, set Logical Drive Type to ISO File and click Open Image….
- Pick an image from the library. It holds current installers (AlmaLinux, Ubuntu Server, Proxmox VE), a recovery image, netboot.xyz for anything else that boots over the network, and vendor tools such as the Intel network boot utility. Click Open.
- Click Plug in, then OK. The image is now attached; the server sees a new removable drive.
- Reboot the server (viewer Power Control → Reset, or Reboot in the portal) and open the one-time boot menu during power-on, F11 on most of our machines. Choose the virtual drive from the list; it appears as a USB or CD-ROM entry alongside the installed disks and the network boot entries.
- When you are done, come back to Virtual Storage and click Plug Out, so the next reboot goes back to the disk.



Installing an operating system this way is a manual install: it does not set the hostname, keys or reverse DNS for you, and the portal will not know which OS is on the machine until you tell it. For the supported images, the automated reinstall is faster and records everything.
Bare-metal servers: management interface access
Lower on the same tab. Use this only when the console above does not work with your hardware, or when you need the controller's own interface.
- Check Your public IP, the same rule as above.
- Choose Keep open for: one to four hours. The session closes itself when the time runs out.
- Click Open management access.
- The panel shows Access is open with a link to the management interface, a username, and a “view it once” link for the password. Open that link straight away and copy the password: it is revealed once and expires with the session.
- When you are done, click Close access now rather than leaving it to expire.

The login is a temporary operator account created for this session, never the controller's administrator. It disappears when the session closes.
Cloud instances
- Open Virtual Machines and click the instance.
- Click Console in the header. It is available in every power state, stopped included, because the VM that will not boot is exactly the one that needs it.
- The console opens in a new tab. The link behind it is single-use and valid for one minute, so if the tab was blocked by a pop-up blocker, allow pop-ups for amoni.app and click Console again.

Cloud consoles are not locked to an address; the single-use link is the protection. What you see is the instance's serial terminal: text only, which is why a Linux instance shows a login prompt rather than a desktop. Log in with the root password (see reset the root password if you do not have it). Cloud instances boot images differently; that flow is documented separately once it is available in the portal.
Method 2 — With the API
Console sessions are minted for a browser, so the API's job is to hand you a launch URL; you open it where you sit. You need a key with the Servers scope (servers.write) or the VMs scope (vms.write). Reference: api.amoni.app/v1/docs.
Bare metal: remote console
Pass the public address that will open the console. The API cannot detect it: the machine calling the API is rarely the one with the browser.
MY_IP=$(curl -s https://api.ipify.org)
curl -s "https://api.amoni.app/v1/servers/955/console?authorized_ip=$MY_IP&mode=standard" \
-H "Authorization: Bearer nr_live_..."
{
"success": true,
"data": {
"available": true,
"console_url": "https://console.amoni.app/s/7f3a9c2e1b/kvm",
"mode": "standard",
"authorized_ip": "198.51.100.77"
}
}
Open console_url in a browser on 198.51.100.77. mode accepts standard (default) or web.
Bare metal: management interface access
curl -s -X POST https://api.amoni.app/v1/servers/955/bmc-access \
-H "Authorization: Bearer nr_live_..." \
-H "Content-Type: application/json" \
-d '{"authorized_ip": "198.51.100.77", "hours": 2}'
{
"success": true,
"data": {
"url": "https://bmc-4821.access.amoni.app",
"expires_at": "2026-09-15 17:30",
"authorized_ip": "198.51.100.77",
"operator_user": "op-7f3a9c",
"credentials_url": "https://amoni.app/secret/9Qk2mX"
}
}
hours is 1 to 4, default 3. The password is not in the response: credentials_url reveals it once, then expires with the session. Fetch it immediately and store it somewhere safe. Close the session when done:
curl -s -X DELETE https://api.amoni.app/v1/servers/955/bmc-access \
-H "Authorization: Bearer nr_live_..."
{ "success": true, "data": { "message": "Remote access closed." } }
Closing when nothing is open is not an error; the message then says “No remote access session to close.”
Cloud instances
curl -s -X POST https://api.amoni.app/v1/vms/990204/411/console \
-H "Authorization: Bearer nr_live_..."
{ "success": true, "data": { "launch_url": "/api/v2/portal/pve-launch/Xk29...a1" } }
The launch URL is relative to the portal: open https://amoni.app + launch_url. It is single-use and expires after 60 seconds, so mint it when you are ready to click, not before.
What the API will tell you
| Status | code |
Meaning |
|---|---|---|
| 200 | — | Session minted. |
| 401 | invalid_api_key |
The key is wrong, expired or revoked. |
| 403 | insufficient_scope |
The key lacks servers.write or vms.write. |
| 404 | — | No server or VM with that id on your account. Body: {"success": false, "error": "Not found"}. |
| 422 | — | authorized_ip missing or not an IP address, or hours out of range (framework shape: {"message": "The authorized ip field is required.", "errors": {…}}); no remote console registered for the server; or management access could not be set up (“Remote access could not be set up right now. Please contact support.”). |
| 503 | — | Cloud: console access is not enabled for this VM yet. Open a ticket. |
| 500 | — | The console platform did not answer: “The action could not be completed right now. Please try again shortly or contact support.” Retry in a moment. |
Troubleshooting
- The console link opens to a refused connection or a blank page. The address you are connecting from is not the one the session admits. Common causes: a VPN came up, you switched from Wi-Fi to mobile data, or your network uses several outgoing addresses. Check your current address (for example at api.ipify.org) and launch a new session with it.
- Black screen in the console. The server is powered off, or is in the first seconds of POST. Check the Running / Stopped badge; click Start if needed and wait.
- The console opens but shows no video, or the keyboard does not respond. The controller does not support the standard console path. Launch again with Console mode: Web. If that also fails, use management interface access.
- “A remote console is not available for this server.” This server is not registered for the browser console. Management interface access works regardless; if that is also missing, open a ticket.
- I closed the password link without copying it. The password is shown once. Close the session with Close access now and open a new one; a new login is generated.
- Key combinations go to my own computer. Use the console's virtual keyboard or its send-keys menu for Ctrl+Alt+Del and function keys.
- Windows says the account is locked or the password expired. The console gets you to the login screen; the fix is in Windows account locked.
- It boots to an error I cannot fix from the console. Rescue mode boots a live system from which you can repair disks, boot loaders and configuration.
Still stuck?
Open a support ticket from the portal with the server selected in the “related server” field, the address you launched the console for, and the time. We can see the session on our side.