Contents

Docs / How-to guides

Read a server's logs

See every call your plan keeps, live, in the terminal or the app.

Every call to a server is kept for as long as your plan keeps logs (7 days on Hobby and pay as you go, 30 on Pro, a year on Scale): when it came in, how it ended, how long it took, and which tool it ran. A call shows up within a few seconds of arriving. Moving to a plan that keeps more days keeps the calls still there for longer; calls already removed don't come back.

In the terminal

From the server's directory:

$ sokie logs
2026-10-19 14:02:51  tool error    200    212ms   getTask                   UPSTREAM 503  Claude
2026-10-19 14:03:10  ok            200     41ms   listTasks                 Claude
2026-10-19 14:03:12  ok            200     38ms   listTasks                 Claude  preview #12

The latest 50 calls, oldest first, so the newest is next to your prompt. Each line has:

  • when the call came in, in your local time;
  • how it ended;
  • the HTTP status the client got;
  • how long it took;
  • the tool it ran.

After those come any labels that apply: a failed tool's error class and the upstream's status, the client that called, and the preview it went to.

To keep watching as calls arrive:

sokie logs --follow

Narrow it down with --errors for calls that didn't end ok, or --tool getTask for one tool's calls. --limit shows up to 200 calls instead of 50. For a server this directory isn't linked to, add --server <slug>. The CLI reference lists every option.

In the app

Open the server's Logs tab. It shows the same calls, newest first, and updates as they arrive. Choose Errors to see only the calls that failed, or a tool's name to see only that tool's calls. Both filters stay in the page's address, so you can share a filtered view. Copy logs copies the calls on screen as tab-separated text, and the commands under the table give the same view in your terminal, with the server filled in: one to print the calls, one with --follow to tail them live. Add --json to pipe them to your agent.

How a call can end

  • ok: the tool ran and answered.
  • tool error: the tool ran, but answered with an error. The log says which kind:
    • BINDING_MISUSE: the arguments were wrong;
    • UPSTREAM: your API failed, with the status it answered;
    • POLICY_DENIED: something has to change first, such as a caller's key;
    • INTERNAL: Sokie failed.
  • refused: the call had no token, or a token Sokie didn't accept. See How clients sign in.
  • paused: the server was paused.
  • rate limited: the caller went over its limit, and was told when to try again.
  • failed: the server couldn't answer at all.

What a log never holds

Arguments, results, error messages, your API's responses, secrets, callers' keys, tokens and IP addresses are never kept. A log records what happened, not what was said, so it's safe to share. An error's message can carry text from your API, so to see one, run the call again in your client, or with sokie dev.