Zum Inhalt springen

Server

Nutze den aicippy-code-Server ueber HTTP.

Der Befehl aicippy-code serve startet einen headless HTTP-Server. Er stellt einen OpenAPI-Endpunkt bereit, den ein aicippy-code-Client nutzen kann.


Nutzung

Terminal-Fenster
aicippy-code serve [--port <number>] [--hostname <string>] [--cors <origin>]

Optionen

FlagDescriptionDefault
--portPort to listen on4096
--hostnameHostname to listen on127.0.0.1
--mdnsEnable mDNS discoveryfalse
--mdns-domainCustom domain name for mDNS serviceaicippy-code.local
--corsAdditional browser origins to allow[]

--cors kann mehrfach angegeben werden:

Terminal-Fenster
aicippy-code serve --cors http://localhost:5173 --cors https://app.example.com

Authentifizierung

Setze AICIPPY_CODE_SERVER_PASSWORD, um den Server mit HTTP Basic Auth zu schuetzen. Der Benutzername ist standardmaessig aicippy-code, kann aber mit AICIPPY_CODE_SERVER_USERNAME ueberschrieben werden. Das gilt fuer aicippy-code serve und aicippy-code web.

Terminal-Fenster
AICIPPY_CODE_SERVER_PASSWORD=your-password aicippy-code serve

Funktionsweise

Wenn du aicippy-code startest, werden TUI und Server gestartet. Die TUI ist dabei der Client, der mit dem Server spricht; dessen OpenAPI-3.1-Endpunkt dient auch zur Generierung des SDK.

Diese Architektur erlaubt mehrere Clients und programmatische Nutzung.

Mit aicippy-code serve startest du einen eigenstaendigen Server. Laeuft bereits eine TUI, startet aicippy-code serve trotzdem eine neue Serverinstanz.


Mit bestehendem Server verbinden

Beim TUI-Start werden Port und Hostname zufaellig gewaehlt. Alternativ gibst du --hostname und --port als Flags vor und verbindest dich dann gezielt damit.

Der Endpunkt /tui kann die TUI ueber den Server steuern, etwa zum Vorbelegen oder Abschicken von Prompts. Dieses Muster nutzen auch die AicippY-IDE-Plugins.


Spec

Der Server veroeffentlicht eine OpenAPI-3.1-Spezifikation unter:

http://<hostname>:<port>/doc

Zum Beispiel http://localhost:4096/doc. Nutze die Spec zum Generieren von Clients, zum Pruefen von Request/Response-Typen oder in einem Swagger-Explorer.


APIs

Der aicippy-code-Server stellt folgende APIs bereit.


Global

MethodPathDescriptionResponse
GET/global/healthRuft Server-Status und Version ab{ healthy: true, version: string }
GET/global/eventRuft globale Events ab (SSE-Stream)Event stream

Project

MethodPathDescriptionResponse
GET/projectListet alle ProjekteProject[]
GET/project/currentRuft das aktuelle Projekt abProject

Path & VCS

MethodPathDescriptionResponse
GET/pathRuft den aktuellen Pfad abPath
GET/vcsRuft VCS-Infos fuer das aktuelle Projekt abVcsInfo

Instanz

MethodPathDescriptionResponse
POST/instance/disposeBeendet die aktuelle Instanzboolean

Konfiguration

MethodPathDescriptionResponse
GET/configRuft Konfigurationsinfos abConfig
PATCH/configAktualisiert KonfigurationConfig
GET/config/providersListet Provider und Standard-Modelle{ providers: Provider[], default: { [key: string]: string } }

Anbieter

MethodPathDescriptionResponse
GET/providerListet alle Provider{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authRuft Authentifizierungsmethoden der Provider ab{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutorisiert einen Provider per OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackBehandelt OAuth-Callback fuer einen Providerboolean

Sitzungen

MethodPathDescriptionNotes
GET/sessionListet alle SitzungenGibt Session[] zurueck
POST/sessionErstellt eine neue Sitzungbody: { parentID?, title? }, returns Session
GET/session/statusRuft Status aller Sitzungen abGibt { [sessionID: string]: SessionStatus } zurueck
GET/session/:idRuft Sitzungsdetails abGibt Session zurueck
DELETE/session/:idLoescht eine Sitzung und alle DatenGibt boolean zurueck
PATCH/session/:idAktualisiert Sitzungseigenschaftenbody: { title? }, returns Session
GET/session/:id/childrenRuft Kind-Sitzungen einer Sitzung abGibt Session[] zurueck
GET/session/:id/todoRuft die Todo-Liste einer Sitzung abGibt Todo[] zurueck
POST/session/:id/initAnalysiert App und erstellt AGENTS.mdbody: { messageID, providerID, modelID }, returns boolean
POST/session/:id/forkForkt eine bestehende Sitzung an einer Nachrichtbody: { messageID? }, returns Session
POST/session/:id/abortBricht eine laufende Sitzung abGibt boolean zurueck
POST/session/:id/shareTeilt eine SitzungGibt Session zurueck
DELETE/session/:id/shareHebt Teilen einer Sitzung aufGibt Session zurueck
GET/session/:id/diffRuft den Diff fuer diese Sitzung abquery: messageID?, returns FileDiff[]
POST/session/:id/summarizeFasst die Sitzung zusammenbody: { providerID, modelID }, returns boolean
POST/session/:id/revertSetzt eine Nachricht zurueckbody: { messageID, partID? }, returns boolean
POST/session/:id/unrevertStellt alle zurueckgesetzten Nachrichten wieder herGibt boolean zurueck
POST/session/:id/permissions/:permissionIDAntwortet auf eine Berechtigungsanfragebody: { response, remember? }, returns boolean

Nachrichten

MethodPathDescriptionNotes
GET/session/:id/messageListet Nachrichten in einer Sitzungquery: limit?, returns { info: Message, parts: Part[]}[]
POST/session/:id/messageSendet eine Nachricht und wartet auf Antwortbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returns { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDRuft Nachrichtendetails abReturns { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncSendet eine Nachricht asynchron (ohne Warten)body: same as /session/:id/message, returns 204 No Content
POST/session/:id/commandFuehrt einen Slash-Befehl ausbody: { messageID?, agent?, model?, command, arguments }, returns { info: Message, parts: Part[]}
POST/session/:id/shellFuehrt einen Shell-Befehl ausbody: { agent, model?, command }, returns { info: Message, parts: Part[]}

Befehle

MethodPathDescriptionResponse
GET/commandListet alle BefehleCommand[]

Dateien

MethodPathDescriptionResponse
GET/find?pattern=<pat>Sucht Text in DateienArray of match objects with path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Findet Dateien und Verzeichnisse nach Namenstring[] (paths)
GET/find/symbol?query=<q>Findet Workspace-SymboleSymbol[]
GET/file?path=<path>Listet Dateien und VerzeichnisseFileNode[]
GET/file/content?path=<p>Liest eine DateiFileContent
GET/file/statusRuft Status fuer getrackte Dateien abFile[]

/find/file Abfrageparameter

  • query (erforderlich) — Suchbegriff (Fuzzy-Suche)
  • type (optional) — Ergebnisse auf "file" oder "directory" beschränken
  • directory (optional) — Projektstammverzeichnis für die Suche überschreiben
  • limit (optional) — Maximale Ergebnisse (1–200)
  • dirs (optional) — Legacy-Flag ("false" gibt nur Dateien zurück)

Werkzeuge (Experimentell)

MethodPathDescriptionResponse
GET/experimental/tool/idsListet alle Tool-IDsToolIDs
GET/experimental/tool?provider=<p>&model=<m>Listet Tools mit JSON-Schemas fuer ein ModellToolList

LSP, Formatierer & MCP

MethodPathDescriptionResponse
GET/lspRuft LSP-Server-Status abLSPStatus[]
GET/formatterRuft Formatter-Status abFormatterStatus[]
GET/mcpRuft MCP-Server-Status ab{ [name: string]: MCPStatus }
POST/mcpFuegt MCP-Server dynamisch hinzubody: { name, config }, returns MCP status object

Agenten

MethodPathDescriptionResponse
GET/agentListet alle verfuegbaren AgentenAgent[]

Logging

MethodPathDescriptionResponse
POST/logSchreibt Log-Eintrag. Body: { service, level, message, extra? }boolean

TUI

MethodPathDescriptionResponse
POST/tui/append-promptHaengt Text an den Prompt anboolean
POST/tui/open-helpOeffnet den Hilfedialogboolean
POST/tui/open-sessionsOeffnet die Session-Auswahlboolean
POST/tui/open-themesOeffnet die Theme-Auswahlboolean
POST/tui/open-modelsOeffnet die Modell-Auswahlboolean
POST/tui/submit-promptSendet den aktuellen Prompt abboolean
POST/tui/clear-promptLeert den Promptboolean
POST/tui/execute-commandFuehrt einen Befehl aus ({ command })boolean
POST/tui/show-toastZeigt Toast ({ title?, message, variant })boolean
GET/tui/control/nextWartet auf die naechste KontrollanfrageControl request object
POST/tui/control/responseAntwortet auf eine Kontrollanfrage ({ body })boolean

Authentifizierung

MethodPathDescriptionResponse
PUT/auth/:idSetzt Authentifizierungsdaten. Body muss dem Provider-Schema entsprechenboolean

Events

MethodPathDescriptionResponse
GET/eventServer-Sent Events Stream. Erstes Event ist server.connected, dann Bus-EventsServer-sent events stream

Dokumentation

MethodPathDescriptionResponse
GET/docOpenAPI 3.1 SpezifikationHTML page with OpenAPI spec