Módulos
Economia Agêntica (ERC-8004/8183)
Identidade/reputação de agentes (ERC-8004) e marketplace de jobs com escrow (ERC-8183).
Suporte a dois EIPs muito recentes (2025) que definem a infraestrutura on-chain para agentes econômicos autônomos: ERC-8004 (identidade + reputação) e ERC-8183 (jobs com escrow).
⚠Nenhum registry canônico publicado ainda
ERC-8004/8183 não têm endereço de deployment oficial confirmado para a Arc (nem cross-chain). AgentRegistry e JobRegistry sempre exigem um endereço de registry explícito — as ABIs padrão são a melhor reconstrução deste SDK do spec em rascunho, sobrescrevíveis via abi=.
Identidade e reputação (ERC-8004)
from arc_devkit.agents.identity import AgentRegistry
from arc_devkit.core.connection import get_web3
registry = AgentRegistry(w3=get_web3(), identity_registry_address="0xSeuRegistry")
identity = registry.register(domain="meuagente.eth", private_key="0xSuaChave")
print(identity.agent_id)
score = registry.get_reputation(agent_id=identity.agent_id)
print(score.average)
Jobs com escrow (ERC-8183)
from decimal import Decimal
from arc_devkit.agents.jobs import JobRegistry
jobs = JobRegistry(w3=get_web3(), registry_address="0xSeuJobRegistry")
# Requester cria o job (requer approve() prévio do USDC no contrato)
job = jobs.create_job(
agent_address="0xEnderecoDoAgente",
amount_usdc=Decimal("25.0"),
spec="Resumir o whitepaper da Arc",
private_key="0xChaveDoRequester",
)
# Agente aceita, entrega e requester libera o escrow
job = jobs.accept_job(job.job_id, private_key="0xChaveDoAgente")
job = jobs.deliver_job(job.job_id, "ipfs://Qm.../resultado.md", private_key="0xChaveDoAgente")
job = jobs.settle_job(job.job_id, private_key="0xChaveDoRequester")
✦Nunca levanta exceção
Todos os métodos de JobRegistry retornam um Job com .error preenchido em caso de falha, em vez de levantar exceção — mais fácil de tratar em pipelines automatizados.
Execução autônoma de jobs
from arc_devkit.agents.job_agent import JobAgent
from arc_devkit.agents.guardrails import Guardrails
agent = JobAgent(
registry_address="0xSeuJobRegistry",
private_key="0xChaveDoAgente",
guardrails=Guardrails.from_settings(),
)
def executar_trabalho(job) -> str:
return "ipfs://Qm.../resultado.md"
result = agent.execute(job_id=1, handler=executar_trabalho)
print(result["status"]) # "delivered"
Contratando via CoordinatorAgent
from arc_devkit.agents.coordinator import CoordinatorAgent
coordinator = CoordinatorAgent(guardrails=Guardrails.from_settings())
coordinator.register_payment_agent(payment_agent)
job = coordinator.hire_agent(job_registry, "0xAgente...", 25.0, "summarize this PDF")
CLI
arcdevkit agent register meuagente.eth --registry 0x...
arcdevkit agent reputation 42 --registry 0x... --reputation-registry 0x...
arcdevkit agent job create 0xAgente... 25.0 --spec "..." --registry 0x...
arcdevkit agent job accept 1 --registry 0x...
arcdevkit agent job deliver 1 "ipfs://..." --registry 0x...
arcdevkit agent job settle 1 --registry 0x...
arcdevkit agent job status 1 --registry 0x...
API REST
POST /agents/register
GET /agents/reputation/{agent_id}
POST /agents/jobs
GET /agents/jobs/{job_id}
POST /agents/jobs/{job_id}/settle
Veja o Cookbook para o exemplo completo de dois agentes negociando um job de ponta a ponta.