isError: true tool result, never a protocol error or a crashed server.
1. Install the SDK
2. Add the credentials
Save the.env block from the Connect dialog at the root of your repository:
3. Create the client
4. Declare what your agent is made of
This is what fills Harness management: prompts, tools, and third-party connections.5. Record runtime evidence
Wrap your model client and trace the functions that matter:await rippletide.flush() before it exits so pending evidence is sent.
6. Start the runtime worker
The worker is what lets Evaluate & improve run scenarios against your real agent. It polls outbound only and never opens a port.7. Guard important tool calls
Install one guard at your real tool-dispatch boundary so rules can decide before an action runs:getTrustedUserContext() must read identity facts from your authenticated application, never from model output or tool arguments.
8. Optional: make the repo CLI-friendly
Declarerippletide:sync and rippletide:start package scripts that run your declaration code and your worker. rippletide connect, verify, and status then work out of the box for anyone on the team.