DOCUMENTAÇÃO PARA AGENTES E DESENVOLVEDORES

Integrar com JavaScript

Use fetch e a API HTTP do serviço hospedado, sem acesso ao repositório privado.

Integre o serviço, sem clonar o servidor

O RAM é um serviço hospedado; seu repositório é privado. Para usar MCP, HTTP ou streaming, você não precisa clonar, compilar ou instalar o RAM. O exemplo usa fetch nativo do Node.js 24 no seu próprio aplicativo; não depende de um pacote privado.

Obtenha uma chave runner da sua conta em Meu acesso. Mantenha-a no host confiável, fora de prompts, URLs e logs. Consulte GET /api/computers, escolha o campo id de um computador próprio com state ready e availability available; GET /api/status?computer_id=ID confirma capacidades.

Delegue e guarde o identificador

Configure RAM_API_KEY e RAM_COMPUTER_ID por um mecanismo privado do seu aplicativo. O exemplo delega uma tarefa de observação, consulta estado e eventos; não executa um modelo no cliente. O Brain remoto requer provedor e limites configurados.

Uma falha de transporte na criação pode ter resultado desconhecido. Guarde os parâmetros e a chave estável antes do envio; não repita automaticamente nem invente outra chave para a mesma intenção.

const origin = 'https://remote-agent-machine.carneiro.ai';
const credential = process.env.RAM_API_KEY;
const computerId = process.env.RAM_COMPUTER_ID;
if (!credential || !computerId) throw new Error('Configure chave runner e computador');

async function request(path, input) {
  const response = await fetch(new URL(path, origin), {
    method: input ? 'POST' : 'GET',
    redirect: 'error',
    headers: {
      Authorization: `Bearer ${credential}`,
      ...(input ? { 'Content-Type': 'application/json' } : {}),
    },
    ...(input ? { body: JSON.stringify(input) } : {}),
  });
  if (!response.ok) throw new Error(`RAM HTTP ${response.status}; confira o estado antes de repetir`);
  return response.json();
}
// Persista esta chave por intenção ANTES de enviar; nunca gere outra no retry.
const requestKey = 'pedido-exemplo-estavel-001';
const { run } = await request('/api/runs', {
  objective: 'Descreva a página atualmente aberta, sem executar alterações.',
  idempotency_key: requestKey,
  runtime: 'agent', computer_id: computerId, allow_mutations: false,
  max_steps: 5, max_duration_seconds: 60, max_output_tokens: 512,
});
// Guarde run.id (UUID), sem imprimir objetivos ou resultados privados.
const current = await request(`/api/runs/${run.id}`);
const history = await request(`/api/runs/${run.id}/events?after=0`);

Apresente intervenção e viewer

waiting_for_input com result.outcome needs_input significa pausa. Consulte GET /api/runs/{id}/intervention-descriptor para apresentar a ação à pessoa sem capabilities; siga https://remote-agent-machine.carneiro.ai/docs/interventions. Após intervenção e liberação do controle humano, a continuação é um POST explícito separado com chave estável.

Na criação, consulta e continuação, viewer pode acompanhar run. GET /api/runs/{id}/viewer, MCP run_viewer e MCP computer_acquire também o oferecem. viewer.url é absoluta na origem do RAM: ofereça o link à pessoa ao iniciar a tarefa ou assumir o computador e abra somente com o consentimento dela. Confira que o link permanece na mesma origem do RAM antes de mostrá-lo; nunca aceite um destino arbitrário vindo do modelo.

A tela limpa começa observando e exige login web da própria conta. O link não contém credencial, não é acesso anônimo nem gravação histórica. Para frames numa interface nativa, siga https://remote-agent-machine.carneiro.ai/docs/streaming; task_observer não concede tela.

Contrato da resposta de viewer

GET /api/runs/{id}/viewer e MCP run_viewer retornam o objeto abaixo. Na criação/consulta/continuação, o mesmo viewer aparece ao lado de run; computer_acquire o inclui ao lado da concessão. SEU_COMPUTADOR representa o ID real do computador. viewer.url já é absoluta na origem desta instalação; clientes que guardaram o formato relativo anterior devem resolvê-lo com essa mesma origem e confirmar que permanece nela.

viewer é opcional nas respostas de tarefa: uma execução simulated ou sem computador não oferece streaming. O endpoint dedicado recusa com HTTP 409 quando não há viewer autorizado. Não invente um link substituto; informe a indisponibilidade. Login expirado ao abrir a tela exige entrar no RAM e abrir o mesmo link novamente.

{
  "viewer": {
    "url": "https://remote-agent-machine.carneiro.ai/view?computer_id=SEU_COMPUTADOR",
    "computer_id": "SEU_COMPUTADOR",
    "requires_login": true,
    "mode": "observe",
    "scope": "computer"
  }
}

Perguntas frequentes

Preciso clonar ou instalar o RAM?

Não. Use o endpoint MCP ou a API HTTP autenticada do serviço hospedado. O repositório do servidor é privado.

Existe um pacote SDK público para instalar?

Não há pacote público anunciado. Este guia usa fetch nativo; o caminho /docs/sdk permanece para links existentes.

Esta documentação é pública e não concede acesso à conta. Confirme capacidades e permissões na instalação autenticada. Segredos não pertencem à conversa do agente.