Saltar al contenido
pando/ docs

Referencia de proveedores, proxy y AG-UI

Opciones de las cuentas de modelos, el inicio de sesión con GitHub Copilot, el proxy LLM local y el servidor AG-UI. Las explicaciones están en GitHub Copilot Auth, Proxy LLM local y AG-UI para aplicaciones web; el paso a paso, en la guía Usa Pando desde tu editor y otras aplicaciones.

Cuentas de proveedor

Declara solo los proveedores que usas. Una sección que se queda con la clave vacía hace que Pando ofrezca una cuenta que no puede funcionar.

[Providers.anthropic]
APIKey   = ''
BaseURL  = ''
Disabled = false

[Providers.openai]
APIKey   = ''
Disabled = false

[Providers.copilot]
Disabled = false

[Providers.ollama]
BaseURL  = 'http://localhost:11434'
Disabled = false

[Providers.llama-cpp]
BaseURL  = 'http://localhost:8080'
Disabled = false

Los modelos se escriben <proveedor>.<modelo>, por ejemplo copilot.gpt-4.1.

Los precios y tamaños de contexto que un proveedor no informa se completan desde models.dev, que se descarga una vez y se guarda 24 horas en ~/.pando_modelsdev.json. Para no contactar nunca con él:

[ModelsDev]
Enabled = false

GitHub Copilot

pando auth copilot login                                   # opens the browser
pando auth copilot login --enterprise-url https://github.mycompany.com
pando auth copilot login --no-browser                      # print the link and code
pando auth copilot status
pando auth copilot logout

No hay nada más que configurar: el inicio de sesión se guarda en tu perfil de Pando.

Plan de CopilotModelos que tienes
FreeUn conjunto limitado
ProGPT-4, GPT-4o
Pro+Un conjunto más amplio
Business / EnterpriseLos modelos de tu organización, incluidos los que añadió con sus propias claves (BYOK)

Los modelos de la organización llevan su nombre delante:

pando --model copilot.gpt-4.1 -p "Explain this code"
pando --model 'copilot.myorg/OpenRouter/some-model' -p "Explain this code"

Proxy LLM local

pando llm-proxy                       # localhost, port 11434
pando llm-proxy --port 8080
pando llm-proxy --host 0.0.0.0
pando llm-proxy --api-key mysecretkey   # ask clients for this key
pando llm-proxy --debug
Lo que pide la otra herramientaQué le das
URL base de la APIhttp://localhost:11434/v1 (o la dirección que muestra el proxy al arrancar)
Clave de APICualquier texto, salvo que hayas arrancado el proxy con --api-key

El proxy habla el formato de OpenAI, y también el /v1/messages de Anthropic.

Servidor AG-UI

pando agui-serve --port 8090 --allow-origin http://localhost:3000   # on its own (recommended)
pando serve --agui-port 8090                                        # next to the Web UI
pando agui-serve --print-token                                      # show the stored token again

Dirección para tu página: http://localhost:8090/api/v1/agui/coder, con la cabecera Authorization: Bearer <token>.

OpciónQué hace
--agentAgente que se ofrece (repítela para varios)
--allow-originDirección web que puede conectarse (repítela para varias)
--personaPersona que se añade a todas las conversaciones
--cwdCarpeta del proyecto en la que trabajar
--host, --portDónde escuchar (localhost, 8090)
--token, --token-fileEliges tú el token. También se lee de la variable de entorno PANDO_AGUI_TOKEN
--no-tokenSin token
--auto-approveAprueba las acciones del agente sin preguntar a la página
--no-tls, --tls-cert, --tls-keyHTTP sin cifrar, o tu propio certificado

Si no das un token, Pando crea uno, lo muestra una vez y lo guarda en ~/.config/pando/agui-token para los siguientes arranques.

[AGUI]
Enabled        = true
Port           = 8090
Host           = 'localhost'
Agents         = ['coder']
AllowedOrigins = ['http://localhost:3000']   # empty means no browser may connect
RequireToken   = true
FrontendTools  = true
HumanInTheLoop = true

[AGUI.Profiles.reviewer]
Base    = 'coder'
Model   = 'anthropic.claude-sonnet-4'
Persona = 'code-reviewer'

Biblioteca cliente (SDK de TypeScript):

import { PandoAguiClient } from '@pando-ai/sdk/agui';

const client = new PandoAguiClient({ baseUrl: 'http://localhost:8090', token });
for await (const event of client.run({ prompt: 'Summarise the repo' })) {
  if (event.type === 'TEXT_MESSAGE_CONTENT') process.stdout.write(event.delta);
}

En el repositorio de Pando, en examples/copilotkit, hay un ejemplo completo en Next.js con chat, un panel de estado, una herramienta de la página y aprobaciones dentro de la página.

Varias ventanas de Pando a la vez (IPC)

No hay nada que configurar: se monta solo cuando hay más de un Pando en marcha. Valores internos: un latido cada 5 s, una ventana se da por desaparecida a los 15 s, una comprobación más a fondo cada 60 s. La lista de ventanas en marcha se guarda en /tmp/pando-instances/.

Para que las ventanas se pasen trabajo entre sí:

[Mesnada.Delegation]
AllowExternalWarmTargets = true   # the one that asks
AcceptDelegations        = true   # the one that accepts
Mensaje entre ventanasQué hace
state.syncCopia completa del estado actual
session.listLista las sesiones
session.activateAbre una sesión
message.sendEnvía un mensaje
session.interruptDetiene la respuesta del modelo en curso
instance.pingComprueba que una ventana sigue viva y qué sabe hacer
delegation.runEjecuta una tarea cedida
delegation.cancelLa cancela
delegation.statusPregunta cómo va
db.compactOrdena la base de datos (lo hace siempre la ventana principal)

Lo que las demás ventanas oyen en directo: sesiones creadas, abiertas y borradas, mensajes nuevos, la respuesta del modelo mientras se escribe, y herramientas que empiezan y terminan.