How Shijima uses OpenServ
Agent 4513, the hourly workflow that wakes it, SERV Reasoning for the timing call, and its identity on Base.
- Agent
shijima, id 4513, open on OpenServ- Workflow
- “Hourly desk review”, id 13895
- Trigger
- cron
0 * * * *, UTC: the top of every hour - Reasoning
- SERV Reasoning, model
gpt-5.4-mini, prompttiming.v2 - Identity
- ERC-8004 on Base, token 95396
Read it as text
- OpenServ platform Hourly desk review: every hour (does or writes)
- Hourly desk review Shijima agent: task (does or writes)
- Your workspace Shijima agent: questions (does or writes)
- Shijima agent The engine: review (does or writes)
- The engine SERV Reasoning: when? (does or writes)
- Shijima agent OpenServ platform: log · done (does or writes)
- Shijima agent ERC-8004 identity: who it is (reads or only asks)
The hourly workflow wakes it
The workflow Hourly desk review has one cron trigger, at the top of every hour. Each hour OpenServ hands Shijima a task, “Run the hourly desk review”.
Shijima overrides the SDK's task handler (doTask), so OpenServ's own model never decides what Shijima does. When the task's words match the workflow exactly, Shijima runs the same review of every agent that its own timer runs, then writes a summary to the task's log and marks it done.
The worker also keeps its own clock, looking every five minutes. At the top of the hour it holds back for four minutes, so OpenServ gets the first go. Each look is keyed to its five-minute slot, so whichever clock arrives first does the work and the other finds it done. If OpenServ is unreachable, your agent carries on and says so.
SERV Reasoning makes the timing call
In each decision, the one AI step is a call to SERV Reasoning:
- One fixed system prompt,
timing.v2, the same for every owner. Your data goes in the message. - A strict JSON answer: one of
ACT_NOW,ACT_PART(25, 50 or 75%),WAIT_REOPENorDECLINE, with confidence, reasons that cite evidence by id, and the options it turned down. - SERV's own
serv_prompt_guardandserv_shadow_agenttools are on. - A 60-second timeout. Any refusal, malformed answer or unknown citation means no decision, recorded as failed.
The chat, in the app, in Telegram and in OpenServ workspaces, is answered by SERV Reasoning too, with its own prompt.
Signing with AgentKit
The operator key that signs your agent's trades is wrapped in Coinbase AgentKit's ViemWalletProvider. AgentKit only signs. Everything else, the write-ahead record, the nonce and the settling, is Shijima's own sender.
Its identity on Base
Shijima has an ERC-8004 agent identity on Base, token 95396, with its own agent card. ERC-8004 is a standard for putting an AI agent's identity on a chain, so anyone can look it up.
What other workspaces can ask it
Anyone can add Shijima to a workspace. Without a link, it can only describe itself and read public agent status. A workspace linked to your agent can also:
| Capability | What it does |
|---|---|
agent_status | Your agent's current state |
latest_decisions | Its latest 1 to 20 decisions |
check_now | Ask it to look now, only if you allowed it |
propose_change | Propose a change, which comes back as a link for you to confirm |
Source notes
This page was checked against the code on 2026-09-26. These are the files it follows.
- packages/shared/src/openserv.ts
- apps/worker/src/openserv/agent.ts
- apps/worker/src/openserv/provision.ts
- apps/worker/src/openserv/serve.ts
- apps/worker/src/openserv/capabilities.ts
- apps/worker/src/agentkit.ts
- apps/worker/src/openserv/identity.ts
- packages/core/src/serv/client.ts
- packages/core/src/serv/prompts/timing.ts
- apps/worker/src/review.ts