---
title: "Wdrożenia z agentów AI — Claude Code, Codex, OpenCode i CI | Nodea"
description: "Jak uruchomić na Nodea aplikację zbudowaną z agentem kodującym: instancja z kluczem SSH i rootem, wdrożenie przez SSH, a potem restart, firewall i DNS przez API v1 i serwer MCP."
url: "https://nodea.pl/pl/dokumentacja-api/ai-coding-agents"
lang: "pl"
updated: "2026-11-13"
---

# Wdrożenia z agentów AI — Claude Code, Codex, OpenCode i CI | Nodea

> Aplikację zbudowaną z Claude Code, Codex, OpenCode albo innym agentem uruchomisz na własnej instancji Nodea. Instancję zamawiasz w panelu, agent dostaje klucz SSH i token, wdraża aplikację przez SSH i zarządza serwerem przez API v1 i serwer MCP.

Nodea współpracuje z agentami kodującymi, takimi jak **Claude Code**, **Codex** i **OpenCode**, oraz z innymi popularnymi harnessami (środowiskami, w których działa agent AI) i pipeline'ami CI. Aplikację, którą zbudowałeś z agentem, łatwo uruchomisz na naszej infrastrukturze, na własnej instancji z pełnym dostępem root: agent wdraża ją przez SSH, a potem zarządza serwerem przez REST API v1 i serwer MCP. Ten wpis prowadzi przez całą ścieżkę i mówi wprost, czego agent zrobić nie może.

## Co jest potrzebne

- Konto w panelu [app.nodea.io](https://app.nodea.io/app) z uzupełnionymi danymi i metodą rozliczeń.
- Para kluczy SSH na maszynie, na której działa agent albo CI. Klucz publiczny dodasz w panelu albo przez API.
- Token osobisty z panelu (Konto → [Tokeny API](https://app.nodea.io/app/account/api-tokens)) z potrzebnymi scope'ami. Do ścieżki z tego wpisu wystarczą infra:read i infra:write; zatrzymanie instancji wymaga infra:delete, a zmiana planu account:read i account:write.

## 1. Podłącz agenta do serwera MCP

Dla Claude Code:

export NODEA\_TOKEN=… # token z panelu, nie wpisuj go do repozytorium claude mcp add --transport http nodea https://app.nodea.io/mcp \\ --header 'Authorization: Bearer ${NODEA\_TOKEN}' claude mcp list # nodea: … ✔ Connected

Apostrofy sprawiają, że w konfiguracji Claude Code zostaje nazwa zmiennej, a nie token. Claude Code wstawia jej wartość przy starcie, więc zmienna NODEA\_TOKEN musi być ustawiona w powłoce, z której go uruchamiasz. Konfiguracje dla Codex, OpenCode i innych klientów znajdziesz we wpisie [Serwer MCP](https://nodea.pl/pl/dokumentacja-api/mcp) (sekcja „Agenci kodujący”). Agent dostaje dokładnie te uprawnienia, które ma token. Akcje nieodwracalne wymagają argumentu confirm: true.

## 2. Zamów instancję w panelu

Instancję zamawiasz w panelu, bo tam akceptujesz regulamin i płacisz. API nie tworzy instancji (POST /api/v1/servers zwraca 410). Formularz zamówienia: [app.nodea.io/app/compute/order](https://app.nodea.io/app/compute/order). Plany i ceny opisują strony [CLOUD.NVMe](https://nodea.pl/pl/cloud-nvme), [CLOUD.SSD](https://nodea.pl/pl/cloud-ssd) i [CLOUD.HDD](https://nodea.pl/pl/cloud-hdd).

W formularzu wybierasz centrum danych, obraz systemu, klucz SSH (z profilu albo wklejony klucz publiczny) i sposób rozliczenia: abonament płatny z góry albo godzinowo z portfela, z narzutem 30% względem abonamentu. Przy trybie godzinowym saldo portfela musi wystarczyć na 24 godziny.

## 3. Odczytaj adres instancji

Po utworzeniu instancja pojawia się w GET /api/v1/servers (narzędzie servers-list, szczegóły: server-get) z adresem IP i portem SSH. Instancja startuje z kluczami SSH dla użytkownika root, więc agent loguje się od razu kluczem.

## 4. Wdróż aplikację przez SSH

Instancja nie przyjmuje własnego cloud-init, a świeży system nie ma Dockera. Środowisko i aplikację agent albo CI instaluje przez SSH. Przykład dla aplikacji z plikiem compose.yaml na Debianie 13, Ubuntu 24.04 i Ubuntu 26.04:

# 1. Raz, na nowej instancji: Docker z wtyczką Compose, rsync i git ssh root@203.0.113.10 'apt-get update && apt-get install -y docker.io rsync git && { apt-get install -y docker-compose-v2 || apt-get install -y docker-compose; }' # 2. Kod aplikacji, bez historii gita, sekretów i zależności rsync -az --exclude .git --exclude .env --exclude node\_modules ./ root@203.0.113.10:/opt/app/ # 3. Uruchomienie ssh root@203.0.113.10 'cd /opt/app && docker compose up -d --build'

Ubuntu ma wtyczkę Compose w pakiecie docker-compose-v2, a Debian 13 w pakiecie docker-compose; pierwsze polecenie instaluje ten, który jest dostępny. Plik .env z hasłami przekaż osobno, np. scp .env.production root@203.0.113.10:/opt/app/.env. Przykład nie używa opcji --delete: usunęłaby z /opt/app także pliki, które aplikacja utworzyła na serwerze (np. przesłane pliki albo dane). Dodaj ją tylko wtedy, gdy aplikacja trzyma dane poza tym katalogiem.

Zamiast rsync możesz pobrać kod z repozytorium na serwerze:

ssh root@203.0.113.10 'git clone https://git.example.com/firma/app.git /opt/app && cd /opt/app && docker compose up -d --build' # kolejne wdrożenia ssh root@203.0.113.10 'cd /opt/app && git pull && docker compose up -d --build'

Prywatne repozytorium wymaga na serwerze klucza wdrożeniowego (deploy key) z prawem tylko do odczytu.

Komponenty z katalogu panelu (serwery WWW, PHP, bazy danych) zainstalujesz też przez POST /api/v1/servers/{server}/components/{component}/install albo narzędzie server-component-install. Docker instalujesz przez SSH.

## 5. Zabezpiecz wdrożenie migawką

Przed ryzykowną zmianą zrób migawkę VM w panelu, na stronie instancji. Migawki tworzysz i przywracasz w panelu; przywrócenie wymaga hasła konta i potwierdzenia e-mailem.

## 6. Otwórz porty i podłącz domenę

- Jeśli na instancji działa firewall agenta nodeaD z polityką odrzucania ruchu przychodzącego, otwarty jest tylko SSH. Porty aplikacji (np. 80 i 443) otworzysz przez PUT /api/v1/servers/{server}/firewall i POST …/firewall/apply albo narzędzia server-firewall-update i server-firewall-apply (szczegóły we wpisie [Serwery](https://nodea.pl/pl/dokumentacja-api/servers)).
- Rekord A dla domeny dodasz przez API DNS albo narzędzia dns-\* (wpis [DNS](https://nodea.pl/pl/dokumentacja-api/dns)). Działa to tylko wtedy, gdy strefa domeny jest w DNS Nodea (panel: Domeny → Strefy DNS). Strefę utrzymywaną u innego dostawcy zmieniasz u niego.

## 7. Zarządzaj instancją

- Start i restart: POST /api/v1/servers/{server}/vm/start i …/vm/reboot (infra:write); zatrzymanie: …/vm/stop (infra:delete, w MCP z confirm: true).
- Zmiana na wyższy plan: GET /api/v1/services/{service}/upgrade-options (narzędzie service-upgrade-options) pokazuje plany, na które można przejść, z dopłatą za resztę okresu. Zmianę zamawia POST /api/v1/services/{service}/upgrade z plan\_id (narzędzie service-upgrade); z dry\_run: true zwraca samą wycenę. {service} to numer usługi, a nie serwera. Znajdziesz go w panelu w menu Usługi → Wszystkie usługi: to liczba na końcu adresu strony usługi, np. app.nodea.io/app/account/services/123. Nowy plan zaczyna działać po opłaceniu dopłaty, a zasoby instancji zwiększa administrator. Zmiana planu przez API działa tylko dla usług rozliczanych w nowym systemie rozliczeń Nodea. Dla usługi rozliczanej w starym systemie API odpowiada 422 z kodem billing\_v2\_required; wtedy poproś o zmianę planu w zgłoszeniu w panelu.
- Klucze SSH: POST /api/v1/ssh-keys (ssh-key-create). Klucz dodany do profilu trafia przez agenta nodeaD na wszystkie Twoje połączone serwery, którymi zarządzasz; nie da się go ograniczyć do jednej instancji.
- Monitoring aplikacji: monitory stron i heartbeaty (wpisy [Strony](https://nodea.pl/pl/dokumentacja-api/websites) i [Heartbeaty](https://nodea.pl/pl/dokumentacja-api/heartbeats)).

## Czego agent nie zrobi

- Nie utworzy ani nie sklonuje instancji. Instancję zamawiasz w panelu.
- Nie poda własnego cloud-init (user-data).
- Nie zmniejszy planu.
- Nie zrobi, nie przywróci ani nie usunie migawki VM. Migawki obsługujesz w panelu.
- Nie zaloguje się przez OAuth z klienta CLI. Klienci w terminalu używają tokenu osobistego w nagłówku.

Nie udostępniamy też CLI, providera Terraform ani specyfikacji OpenAPI. Pełną referencję endpointów znajdziesz w tej dokumentacji, zaczynając od [wprowadzenia do API](https://nodea.pl/pl/dokumentacja-api/overview).

### Czy Nodea obsługuje Claude Code, Codex i OpenCode?

Tak. Każdy z nich łączy się z serwerem MCP Nodea (https://app.nodea.io/mcp) tokenem osobistym w nagłówku Authorization: Bearer, a aplikację wdraża przez SSH na Twojej instancji z dostępem root. To samo działa z innymi harnessami (środowiskami, w których działa agent AI), które obsługują MCP po HTTP, i z pipeline'ami CI.

### Czy agent może sam utworzyć instancję?

Nie. Instancję zamawiasz w panelu (app.nodea.io/app/compute/order), bo tam akceptujesz regulamin i płacisz. Potem agent odczyta jej adres IP przez API albo MCP i przejmie wdrożenie przez SSH.

### Jak jest rozliczana instancja?

Abonament płatny z góry albo rozliczenie godzinowe z portfela, z narzutem 30% względem abonamentu. Przy trybie godzinowym saldo portfela musi wystarczyć na 24 godziny.

### Czy mogę podać własne cloud-init (user-data)?

Nie. Instancja startuje z kluczami SSH dla roota i adresem IP. Resztę (Docker, środowisko, aplikację) agent albo CI instaluje przez SSH po pierwszym uruchomieniu.

### Jak wrócić, gdy wdrożenie się nie uda?

Przed wdrożeniem zrób migawkę VM w panelu, na stronie instancji. Przywrócenie migawki też robisz w panelu; wymaga hasła konta i potwierdzenia e-mailem.

## Powiązane

- [Serwer MCP Nodea — endpoint, uwierzytelnianie, discovery OAuth, narzędzia | Nodea](https://nodea.pl/pl/dokumentacja-api/mcp)
- [API Nodea v1 — wprowadzenie: base URL, tokeny, scope'y, limity | Nodea](https://nodea.pl/pl/dokumentacja-api/overview)
- [Serwery — API v1 i MCP | Dokumentacja Nodea](https://nodea.pl/pl/dokumentacja-api/servers)
- [Klucze SSH — API v1 i MCP | Dokumentacja Nodea](https://nodea.pl/pl/dokumentacja-api/ssh-keys)
- [DNS — API v1 i MCP | Dokumentacja Nodea](https://nodea.pl/pl/dokumentacja-api/dns)

---

Wersje językowe: [en](https://nodea.io/en/api-docs/ai-coding-agents.md)  
Spis treści witryny: [llms.txt](https://nodea.pl/pl/llms.txt)
