LangSmith is observability. opentine is state.
People keep asking what opentine competes with. The honest answer is: nothing in the LangSmith shape of the world. We're solving a different problem.
LangSmith, Langfuse, Helicone, Braintrust, Arize — these are observability tools. They ingest traces. They show you dashboards. They help you understand what your agents did after the fact. They are, in the purest sense, read-only views over a history you cannot change.
That's valuable. I use traces every day. But observability is the wrong primitive if what you actually want is to intervene in the run.
A log tells you what went wrong. A state snapshot lets you fix it from the exact point it broke.
This is the distinction between a flight recorder and a save file. The flight recorder is invaluable for the NTSB investigation. The save file is invaluable if you want to reload the level and try a different jump.
Agent development is much closer to iterating on a video game level than conducting a post-mortem. You are not trying to understand a one-time failure. You are trying to converge on a working prompt, a working tool choice, a working model. You need to rewind, tweak, and replay. Not once. Hundreds of times. Cheaply.
An observability tool can't do this. It doesn't hold the state needed to resume execution. It holds strings and timestamps. The model outputs are captured as text, not as re-executable steps. The tool results are logged, not cached with the inputs that produced them. You can read the trace. You cannot run from it.
opentine stores the run as resumable state. Every step is a content-addressed node with its full inputs, its cached outputs, and its model config. Every .tine file is a save state that any machine can load and continue from.
The practical consequence is that the same artifact does double duty:
If you want observability, `tine show` gives you the trace view. Every call, every tool invocation, every token count. Same information you'd get from LangSmith.
If you want to intervene, `tine fork` lets you branch from any step. Change the prompt. Swap the model. Add a tool. Replay. The first N steps are cached — you pay nothing to re-reach the decision point.
Observability is a superset of zero. State is a superset of observability. If you have state, you can always derive a trace. If you have a trace, you can never derive state.
The other tools aren't wrong. They're solving for compliance teams, SRE teams, and product teams who need to watch what shipped. That's a real need. But if you're the one actually writing the agent, reading the trace is the consolation prize. What you want is to reload the save and try again.
That's the primitive opentine is built around. Not logs. State.