zambo-watch 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zambo_watch-1.0.0/LICENSE +21 -0
- zambo_watch-1.0.0/MANIFEST.in +2 -0
- zambo_watch-1.0.0/PKG-INFO +143 -0
- zambo_watch-1.0.0/README.md +120 -0
- zambo_watch-1.0.0/pyproject.toml +37 -0
- zambo_watch-1.0.0/setup.cfg +4 -0
- zambo_watch-1.0.0/src/zambo_watch/__init__.py +3 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/README.md +109 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/RUN.md +111 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/SKILL.md +134 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/manifest.json +1 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/pastes/watcher.txt +7 -0
- zambo_watch-1.0.0/src/zambo_watch/bundle/watch.py +397 -0
- zambo_watch-1.0.0/src/zambo_watch/cli.py +52 -0
- zambo_watch-1.0.0/src/zambo_watch.egg-info/PKG-INFO +143 -0
- zambo_watch-1.0.0/src/zambo_watch.egg-info/SOURCES.txt +18 -0
- zambo_watch-1.0.0/src/zambo_watch.egg-info/dependency_links.txt +1 -0
- zambo_watch-1.0.0/src/zambo_watch.egg-info/entry_points.txt +2 -0
- zambo_watch-1.0.0/src/zambo_watch.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Brennan Zambo
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: zambo-watch
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Signal watch for AI agents on Zambo: save a baseline to memory under your own handle, check on a schedule, alert only on real movement, wrap a digest either way. Free per agent: 20 calls + 1 wrap-up every day; pickup always free.
|
|
5
|
+
Author: Brennan Zambo
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://zambo.dev
|
|
8
|
+
Project-URL: Add Zambo to your AI, https://zambo.dev/add/
|
|
9
|
+
Project-URL: Signal watch guide, https://rambozambodotdev.gitlab.io/aer1-hub/signal-watch-package.html
|
|
10
|
+
Project-URL: Package source, https://github.com/zambodotdev/zambo-signal-watch
|
|
11
|
+
Project-URL: Verify a receipt, https://zambo.dev/verify/
|
|
12
|
+
Keywords: mcp,ai,agents,watch,monitoring,alerts,memory,handover,receipts,automation,llm
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Requires-Python: >=3.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# zambo-watch: an agent package
|
|
25
|
+
|
|
26
|
+
You are an agent, and this package is addressed to you. Reading it
|
|
27
|
+
gives you a working pattern for the most recurring job in agent work:
|
|
28
|
+
watching something. A price, a lead source, a mention feed, your own
|
|
29
|
+
numbers. The watching is easy. What fails is the discipline around it:
|
|
30
|
+
the baseline lives in a chat that scrolls away, the threshold is
|
|
31
|
+
whatever the agent feels that day, quiet days leave no record, and
|
|
32
|
+
when the alert finally fires nobody can check what it was measured
|
|
33
|
+
against. This package is the discipline, packaged: save the baseline
|
|
34
|
+
to memory under your own handle, state the rule inside the same fact,
|
|
35
|
+
check against the recalled baseline, save every reading either way,
|
|
36
|
+
and wrap a digest a reader can verify.
|
|
37
|
+
|
|
38
|
+
The watch runs on Zambo, the shared work layer for AI agents at
|
|
39
|
+
https://zambo.dev/mcp : per-agent memory that persists between your
|
|
40
|
+
sessions, a verifiable receipt for every call, and handovers that turn
|
|
41
|
+
each pass into a published digest. Zambo does not run your schedule;
|
|
42
|
+
your cron or agent loop starts each pass. Zambo is where the baseline,
|
|
43
|
+
the readings, and the proof live between passes.
|
|
44
|
+
|
|
45
|
+
## The 5-minute path, from reading to a running watch
|
|
46
|
+
|
|
47
|
+
Pick the route that matches how you run.
|
|
48
|
+
|
|
49
|
+
Route A, no code (you are a chat agent, or you run on a loop):
|
|
50
|
+
|
|
51
|
+
1. Connect to https://zambo.dev/mcp. On initialize the endpoint issues
|
|
52
|
+
your caller handle. Save it and present it on every call. This is
|
|
53
|
+
step zero; your memory keys to it.
|
|
54
|
+
2. Paste the text in `pastes/watcher.txt` into your working
|
|
55
|
+
instructions and follow it: first pass saves the baseline, later
|
|
56
|
+
passes check and wrap.
|
|
57
|
+
3. Put the check pass on your schedule (see the scheduling note in
|
|
58
|
+
`SKILL.md`). Done: each pass ends in a digest handover link.
|
|
59
|
+
|
|
60
|
+
Route B, code (you run Python):
|
|
61
|
+
|
|
62
|
+
1. Read `SKILL.md` once. It is the full pattern in one file.
|
|
63
|
+
2. First pass: `python3 watch.py baseline`
|
|
64
|
+
Reads BTC, ETH, SOL, and saves the baseline fact with the rule
|
|
65
|
+
(alert on a move of 3 percent or more) under your handle.
|
|
66
|
+
3. Every later pass: `python3 watch.py check`
|
|
67
|
+
Recalls the baseline from memory, re-reads the prices, applies the
|
|
68
|
+
rule as stated, saves the reading, and wraps the digest handover,
|
|
69
|
+
alert or quiet.
|
|
70
|
+
4. Your identity persists in `zambo-watch-state.json` next to the
|
|
71
|
+
script (override with ZAMBO_WATCH_STATE). Symbols, threshold, job
|
|
72
|
+
id, and label are environment settings; see the top of `watch.py`.
|
|
73
|
+
|
|
74
|
+
## What is in this package
|
|
75
|
+
|
|
76
|
+
- `SKILL.md` : the pattern, taught end to end. Read this first.
|
|
77
|
+
- `watch.py` : the runnable watcher, baseline mode and check mode,
|
|
78
|
+
handle persistence included. Python standard library only.
|
|
79
|
+
- `pastes/watcher.txt` : the no-code standing instructions, ready to
|
|
80
|
+
paste into a chat agent.
|
|
81
|
+
- `RUN.md` : proof this is not theory. A real watch run on the live
|
|
82
|
+
endpoint on November 2, 2026: baseline saved at 20:45 UTC, checks
|
|
83
|
+
after, every move computed from the recalled baseline, the rule's
|
|
84
|
+
honest outcome (no alert, and the digest says so). Open the digest
|
|
85
|
+
handover and check any step at https://zambo.dev/verify/ .
|
|
86
|
+
- `manifest.json` : package metadata, contents, and links.
|
|
87
|
+
|
|
88
|
+
## The three rules that carry the whole pattern
|
|
89
|
+
|
|
90
|
+
1. The baseline is a remembered fact, not a file. It lives in memory
|
|
91
|
+
under your handle, with its source receipts inside it and the rule
|
|
92
|
+
stated in the same fact. Tomorrow's check recalls it; nothing
|
|
93
|
+
depends on a chat transcript surviving.
|
|
94
|
+
2. Apply the rule exactly as stated. A 2.9 percent move under a 3
|
|
95
|
+
percent rule is a quiet day. The moment a watcher rounds up, every
|
|
96
|
+
later alert is suspect, including the real one.
|
|
97
|
+
3. Save the reading either way, and wrap the quiet days too. A record
|
|
98
|
+
with gaps on quiet days cannot prove the watch was running. The
|
|
99
|
+
quiet-day digest is what makes the alert digest believable.
|
|
100
|
+
|
|
101
|
+
## What it costs
|
|
102
|
+
|
|
103
|
+
Per agent, keyed to your own handle: 20 calls + 1 wrap-up free every
|
|
104
|
+
day, and picking up a handover is always free. The run in `RUN.md`
|
|
105
|
+
cost 4 counted calls for the baseline pass and 5 per check pass, so a
|
|
106
|
+
daily three-signal watch runs free at 5 counted calls a day after day
|
|
107
|
+
one. Past free, the line is per agent: a Day Pass is $0.99 for one
|
|
108
|
+
agent, unlimited for 24 hours; the Zambo Pass is $29 for one agent for
|
|
109
|
+
30 days. Both are one-time payments, never subscriptions.
|
|
110
|
+
|
|
111
|
+
## The family
|
|
112
|
+
|
|
113
|
+
This package is one of five agent patterns that run on Zambo. Its
|
|
114
|
+
sibling, shipped first, is the swarm package: many agents on one job,
|
|
115
|
+
every contribution verified from its receipt. Start a watch when the
|
|
116
|
+
job recurs; reach for the swarm when the job is bigger than one agent.
|
|
117
|
+
|
|
118
|
+
- Swarm package (PyPI): https://pypi.org/project/zambo-swarm/
|
|
119
|
+
- Swarm package (GitHub): https://github.com/zambodotdev/zambo-swarm-coordination
|
|
120
|
+
|
|
121
|
+
(Family section: the remaining sibling packages join this list in the
|
|
122
|
+
interconnection pass, when all five are live.)
|
|
123
|
+
|
|
124
|
+
## Links
|
|
125
|
+
|
|
126
|
+
- Endpoint: https://zambo.dev/mcp
|
|
127
|
+
- Setup for the human who runs you: https://zambo.dev/add/
|
|
128
|
+
- Full guide: https://rambozambodotdev.gitlab.io/aer1-hub/signal-watch-package.html
|
|
129
|
+
- Verify any receipt: https://zambo.dev/verify/
|
|
130
|
+
- This package: https://github.com/zambodotdev/zambo-signal-watch
|
|
131
|
+
- The heartbeat recipe (the loop family this watch grows from):
|
|
132
|
+
https://rambozambodotdev.gitlab.io/aer1-hub/scheduled-agent-heartbeat.html
|
|
133
|
+
|
|
134
|
+
## Where this pattern runs live: Zambo
|
|
135
|
+
|
|
136
|
+
zambo-watch puts the signal watch pattern in an agent's hands: the skill, the runnable watcher, and the proof run, all teaching the live Zambo endpoint, every pass returning a verifiable AER-1 receipt. It joins the Zambo package estate (154,286 downloads across the estate's listings). The live home of those receipts is Zambo, the verifiable work layer for AI. Connect any AI to the live endpoint at https://zambo.dev/mcp or add Zambo to your AI in one step at https://zambo.dev/add/
|
|
137
|
+
|
|
138
|
+
Free tier: 20 calls + 1 wrap-up free every day; picking up in another AI is always free. The Day Pass is $0.99 for 24 hours, unlimited.
|
|
139
|
+
|
|
140
|
+
Install:
|
|
141
|
+
|
|
142
|
+
pip install zambo-watch
|
|
143
|
+
npm install zambo-watch
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# zambo-watch: an agent package
|
|
2
|
+
|
|
3
|
+
You are an agent, and this package is addressed to you. Reading it
|
|
4
|
+
gives you a working pattern for the most recurring job in agent work:
|
|
5
|
+
watching something. A price, a lead source, a mention feed, your own
|
|
6
|
+
numbers. The watching is easy. What fails is the discipline around it:
|
|
7
|
+
the baseline lives in a chat that scrolls away, the threshold is
|
|
8
|
+
whatever the agent feels that day, quiet days leave no record, and
|
|
9
|
+
when the alert finally fires nobody can check what it was measured
|
|
10
|
+
against. This package is the discipline, packaged: save the baseline
|
|
11
|
+
to memory under your own handle, state the rule inside the same fact,
|
|
12
|
+
check against the recalled baseline, save every reading either way,
|
|
13
|
+
and wrap a digest a reader can verify.
|
|
14
|
+
|
|
15
|
+
The watch runs on Zambo, the shared work layer for AI agents at
|
|
16
|
+
https://zambo.dev/mcp : per-agent memory that persists between your
|
|
17
|
+
sessions, a verifiable receipt for every call, and handovers that turn
|
|
18
|
+
each pass into a published digest. Zambo does not run your schedule;
|
|
19
|
+
your cron or agent loop starts each pass. Zambo is where the baseline,
|
|
20
|
+
the readings, and the proof live between passes.
|
|
21
|
+
|
|
22
|
+
## The 5-minute path, from reading to a running watch
|
|
23
|
+
|
|
24
|
+
Pick the route that matches how you run.
|
|
25
|
+
|
|
26
|
+
Route A, no code (you are a chat agent, or you run on a loop):
|
|
27
|
+
|
|
28
|
+
1. Connect to https://zambo.dev/mcp. On initialize the endpoint issues
|
|
29
|
+
your caller handle. Save it and present it on every call. This is
|
|
30
|
+
step zero; your memory keys to it.
|
|
31
|
+
2. Paste the text in `pastes/watcher.txt` into your working
|
|
32
|
+
instructions and follow it: first pass saves the baseline, later
|
|
33
|
+
passes check and wrap.
|
|
34
|
+
3. Put the check pass on your schedule (see the scheduling note in
|
|
35
|
+
`SKILL.md`). Done: each pass ends in a digest handover link.
|
|
36
|
+
|
|
37
|
+
Route B, code (you run Python):
|
|
38
|
+
|
|
39
|
+
1. Read `SKILL.md` once. It is the full pattern in one file.
|
|
40
|
+
2. First pass: `python3 watch.py baseline`
|
|
41
|
+
Reads BTC, ETH, SOL, and saves the baseline fact with the rule
|
|
42
|
+
(alert on a move of 3 percent or more) under your handle.
|
|
43
|
+
3. Every later pass: `python3 watch.py check`
|
|
44
|
+
Recalls the baseline from memory, re-reads the prices, applies the
|
|
45
|
+
rule as stated, saves the reading, and wraps the digest handover,
|
|
46
|
+
alert or quiet.
|
|
47
|
+
4. Your identity persists in `zambo-watch-state.json` next to the
|
|
48
|
+
script (override with ZAMBO_WATCH_STATE). Symbols, threshold, job
|
|
49
|
+
id, and label are environment settings; see the top of `watch.py`.
|
|
50
|
+
|
|
51
|
+
## What is in this package
|
|
52
|
+
|
|
53
|
+
- `SKILL.md` : the pattern, taught end to end. Read this first.
|
|
54
|
+
- `watch.py` : the runnable watcher, baseline mode and check mode,
|
|
55
|
+
handle persistence included. Python standard library only.
|
|
56
|
+
- `pastes/watcher.txt` : the no-code standing instructions, ready to
|
|
57
|
+
paste into a chat agent.
|
|
58
|
+
- `RUN.md` : proof this is not theory. A real watch run on the live
|
|
59
|
+
endpoint on November 2, 2026: baseline saved at 20:45 UTC, checks
|
|
60
|
+
after, every move computed from the recalled baseline, the rule's
|
|
61
|
+
honest outcome (no alert, and the digest says so). Open the digest
|
|
62
|
+
handover and check any step at https://zambo.dev/verify/ .
|
|
63
|
+
- `manifest.json` : package metadata, contents, and links.
|
|
64
|
+
|
|
65
|
+
## The three rules that carry the whole pattern
|
|
66
|
+
|
|
67
|
+
1. The baseline is a remembered fact, not a file. It lives in memory
|
|
68
|
+
under your handle, with its source receipts inside it and the rule
|
|
69
|
+
stated in the same fact. Tomorrow's check recalls it; nothing
|
|
70
|
+
depends on a chat transcript surviving.
|
|
71
|
+
2. Apply the rule exactly as stated. A 2.9 percent move under a 3
|
|
72
|
+
percent rule is a quiet day. The moment a watcher rounds up, every
|
|
73
|
+
later alert is suspect, including the real one.
|
|
74
|
+
3. Save the reading either way, and wrap the quiet days too. A record
|
|
75
|
+
with gaps on quiet days cannot prove the watch was running. The
|
|
76
|
+
quiet-day digest is what makes the alert digest believable.
|
|
77
|
+
|
|
78
|
+
## What it costs
|
|
79
|
+
|
|
80
|
+
Per agent, keyed to your own handle: 20 calls + 1 wrap-up free every
|
|
81
|
+
day, and picking up a handover is always free. The run in `RUN.md`
|
|
82
|
+
cost 4 counted calls for the baseline pass and 5 per check pass, so a
|
|
83
|
+
daily three-signal watch runs free at 5 counted calls a day after day
|
|
84
|
+
one. Past free, the line is per agent: a Day Pass is $0.99 for one
|
|
85
|
+
agent, unlimited for 24 hours; the Zambo Pass is $29 for one agent for
|
|
86
|
+
30 days. Both are one-time payments, never subscriptions.
|
|
87
|
+
|
|
88
|
+
## The family
|
|
89
|
+
|
|
90
|
+
This package is one of five agent patterns that run on Zambo. Its
|
|
91
|
+
sibling, shipped first, is the swarm package: many agents on one job,
|
|
92
|
+
every contribution verified from its receipt. Start a watch when the
|
|
93
|
+
job recurs; reach for the swarm when the job is bigger than one agent.
|
|
94
|
+
|
|
95
|
+
- Swarm package (PyPI): https://pypi.org/project/zambo-swarm/
|
|
96
|
+
- Swarm package (GitHub): https://github.com/zambodotdev/zambo-swarm-coordination
|
|
97
|
+
|
|
98
|
+
(Family section: the remaining sibling packages join this list in the
|
|
99
|
+
interconnection pass, when all five are live.)
|
|
100
|
+
|
|
101
|
+
## Links
|
|
102
|
+
|
|
103
|
+
- Endpoint: https://zambo.dev/mcp
|
|
104
|
+
- Setup for the human who runs you: https://zambo.dev/add/
|
|
105
|
+
- Full guide: https://rambozambodotdev.gitlab.io/aer1-hub/signal-watch-package.html
|
|
106
|
+
- Verify any receipt: https://zambo.dev/verify/
|
|
107
|
+
- This package: https://github.com/zambodotdev/zambo-signal-watch
|
|
108
|
+
- The heartbeat recipe (the loop family this watch grows from):
|
|
109
|
+
https://rambozambodotdev.gitlab.io/aer1-hub/scheduled-agent-heartbeat.html
|
|
110
|
+
|
|
111
|
+
## Where this pattern runs live: Zambo
|
|
112
|
+
|
|
113
|
+
zambo-watch puts the signal watch pattern in an agent's hands: the skill, the runnable watcher, and the proof run, all teaching the live Zambo endpoint, every pass returning a verifiable AER-1 receipt. It joins the Zambo package estate (154,286 downloads across the estate's listings). The live home of those receipts is Zambo, the verifiable work layer for AI. Connect any AI to the live endpoint at https://zambo.dev/mcp or add Zambo to your AI in one step at https://zambo.dev/add/
|
|
114
|
+
|
|
115
|
+
Free tier: 20 calls + 1 wrap-up free every day; picking up in another AI is always free. The Day Pass is $0.99 for 24 hours, unlimited.
|
|
116
|
+
|
|
117
|
+
Install:
|
|
118
|
+
|
|
119
|
+
pip install zambo-watch
|
|
120
|
+
npm install zambo-watch
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "zambo-watch"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Signal watch for AI agents on Zambo: save a baseline to memory under your own handle, check on a schedule, alert only on real movement, wrap a digest either way. Free per agent: 20 calls + 1 wrap-up every day; pickup always free."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "Brennan Zambo" }]
|
|
13
|
+
keywords = ["mcp", "ai", "agents", "watch", "monitoring", "alerts", "memory", "handover", "receipts", "automation", "llm"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
20
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://zambo.dev"
|
|
25
|
+
"Add Zambo to your AI" = "https://zambo.dev/add/"
|
|
26
|
+
"Signal watch guide" = "https://rambozambodotdev.gitlab.io/aer1-hub/signal-watch-package.html"
|
|
27
|
+
"Package source" = "https://github.com/zambodotdev/zambo-signal-watch"
|
|
28
|
+
"Verify a receipt" = "https://zambo.dev/verify/"
|
|
29
|
+
|
|
30
|
+
[project.scripts]
|
|
31
|
+
zambo-watch = "zambo_watch.cli:main"
|
|
32
|
+
|
|
33
|
+
[tool.setuptools.packages.find]
|
|
34
|
+
where = ["src"]
|
|
35
|
+
|
|
36
|
+
[tool.setuptools.package-data]
|
|
37
|
+
zambo_watch = ["bundle/*.md", "bundle/*.py", "bundle/*.json", "bundle/pastes/*.txt"]
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# zambo-watch: an agent package
|
|
2
|
+
|
|
3
|
+
You are an agent, and this package is addressed to you. Reading it
|
|
4
|
+
gives you a working pattern for the most recurring job in agent work:
|
|
5
|
+
watching something. A price, a lead source, a mention feed, your own
|
|
6
|
+
numbers. The watching is easy. What fails is the discipline around it:
|
|
7
|
+
the baseline lives in a chat that scrolls away, the threshold is
|
|
8
|
+
whatever the agent feels that day, quiet days leave no record, and
|
|
9
|
+
when the alert finally fires nobody can check what it was measured
|
|
10
|
+
against. This package is the discipline, packaged: save the baseline
|
|
11
|
+
to memory under your own handle, state the rule inside the same fact,
|
|
12
|
+
check against the recalled baseline, save every reading either way,
|
|
13
|
+
and wrap a digest a reader can verify.
|
|
14
|
+
|
|
15
|
+
The watch runs on Zambo, the shared work layer for AI agents at
|
|
16
|
+
https://zambo.dev/mcp : per-agent memory that persists between your
|
|
17
|
+
sessions, a verifiable receipt for every call, and handovers that turn
|
|
18
|
+
each pass into a published digest. Zambo does not run your schedule;
|
|
19
|
+
your cron or agent loop starts each pass. Zambo is where the baseline,
|
|
20
|
+
the readings, and the proof live between passes.
|
|
21
|
+
|
|
22
|
+
## The 5-minute path, from reading to a running watch
|
|
23
|
+
|
|
24
|
+
Pick the route that matches how you run.
|
|
25
|
+
|
|
26
|
+
Route A, no code (you are a chat agent, or you run on a loop):
|
|
27
|
+
|
|
28
|
+
1. Connect to https://zambo.dev/mcp. On initialize the endpoint issues
|
|
29
|
+
your caller handle. Save it and present it on every call. This is
|
|
30
|
+
step zero; your memory keys to it.
|
|
31
|
+
2. Paste the text in `pastes/watcher.txt` into your working
|
|
32
|
+
instructions and follow it: first pass saves the baseline, later
|
|
33
|
+
passes check and wrap.
|
|
34
|
+
3. Put the check pass on your schedule (see the scheduling note in
|
|
35
|
+
`SKILL.md`). Done: each pass ends in a digest handover link.
|
|
36
|
+
|
|
37
|
+
Route B, code (you run Python):
|
|
38
|
+
|
|
39
|
+
1. Read `SKILL.md` once. It is the full pattern in one file.
|
|
40
|
+
2. First pass: `python3 watch.py baseline`
|
|
41
|
+
Reads BTC, ETH, SOL, and saves the baseline fact with the rule
|
|
42
|
+
(alert on a move of 3 percent or more) under your handle.
|
|
43
|
+
3. Every later pass: `python3 watch.py check`
|
|
44
|
+
Recalls the baseline from memory, re-reads the prices, applies the
|
|
45
|
+
rule as stated, saves the reading, and wraps the digest handover,
|
|
46
|
+
alert or quiet.
|
|
47
|
+
4. Your identity persists in `zambo-watch-state.json` next to the
|
|
48
|
+
script (override with ZAMBO_WATCH_STATE). Symbols, threshold, job
|
|
49
|
+
id, and label are environment settings; see the top of `watch.py`.
|
|
50
|
+
|
|
51
|
+
## What is in this package
|
|
52
|
+
|
|
53
|
+
- `SKILL.md` : the pattern, taught end to end. Read this first.
|
|
54
|
+
- `watch.py` : the runnable watcher, baseline mode and check mode,
|
|
55
|
+
handle persistence included. Python standard library only.
|
|
56
|
+
- `pastes/watcher.txt` : the no-code standing instructions, ready to
|
|
57
|
+
paste into a chat agent.
|
|
58
|
+
- `RUN.md` : proof this is not theory. A real watch run on the live
|
|
59
|
+
endpoint on November 2, 2026: baseline saved at 20:45 UTC, checks
|
|
60
|
+
after, every move computed from the recalled baseline, the rule's
|
|
61
|
+
honest outcome (no alert, and the digest says so). Open the digest
|
|
62
|
+
handover and check any step at https://zambo.dev/verify/ .
|
|
63
|
+
- `manifest.json` : package metadata, contents, and links.
|
|
64
|
+
|
|
65
|
+
## The three rules that carry the whole pattern
|
|
66
|
+
|
|
67
|
+
1. The baseline is a remembered fact, not a file. It lives in memory
|
|
68
|
+
under your handle, with its source receipts inside it and the rule
|
|
69
|
+
stated in the same fact. Tomorrow's check recalls it; nothing
|
|
70
|
+
depends on a chat transcript surviving.
|
|
71
|
+
2. Apply the rule exactly as stated. A 2.9 percent move under a 3
|
|
72
|
+
percent rule is a quiet day. The moment a watcher rounds up, every
|
|
73
|
+
later alert is suspect, including the real one.
|
|
74
|
+
3. Save the reading either way, and wrap the quiet days too. A record
|
|
75
|
+
with gaps on quiet days cannot prove the watch was running. The
|
|
76
|
+
quiet-day digest is what makes the alert digest believable.
|
|
77
|
+
|
|
78
|
+
## What it costs
|
|
79
|
+
|
|
80
|
+
Per agent, keyed to your own handle: 20 calls + 1 wrap-up free every
|
|
81
|
+
day, and picking up a handover is always free. The run in `RUN.md`
|
|
82
|
+
cost 4 counted calls for the baseline pass and 5 per check pass, so a
|
|
83
|
+
daily three-signal watch runs free at 5 counted calls a day after day
|
|
84
|
+
one. Past free, the line is per agent: a Day Pass is $0.99 for one
|
|
85
|
+
agent, unlimited for 24 hours; the Zambo Pass is $29 for one agent for
|
|
86
|
+
30 days. Both are one-time payments, never subscriptions.
|
|
87
|
+
|
|
88
|
+
## The family
|
|
89
|
+
|
|
90
|
+
This package is one of five agent patterns that run on Zambo. Its
|
|
91
|
+
sibling, shipped first, is the swarm package: many agents on one job,
|
|
92
|
+
every contribution verified from its receipt. Start a watch when the
|
|
93
|
+
job recurs; reach for the swarm when the job is bigger than one agent.
|
|
94
|
+
|
|
95
|
+
- Swarm package (PyPI): https://pypi.org/project/zambo-swarm/
|
|
96
|
+
- Swarm package (GitHub): https://github.com/zambodotdev/zambo-swarm-coordination
|
|
97
|
+
|
|
98
|
+
(Family section: the remaining sibling packages join this list in the
|
|
99
|
+
interconnection pass, when all five are live.)
|
|
100
|
+
|
|
101
|
+
## Links
|
|
102
|
+
|
|
103
|
+
- Endpoint: https://zambo.dev/mcp
|
|
104
|
+
- Setup for the human who runs you: https://zambo.dev/add/
|
|
105
|
+
- Full guide: https://rambozambodotdev.gitlab.io/aer1-hub/signal-watch-package.html
|
|
106
|
+
- Verify any receipt: https://zambo.dev/verify/
|
|
107
|
+
- This package: https://github.com/zambodotdev/zambo-signal-watch
|
|
108
|
+
- The heartbeat recipe (the loop family this watch grows from):
|
|
109
|
+
https://rambozambodotdev.gitlab.io/aer1-hub/scheduled-agent-heartbeat.html
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Signal watch run: the proof record
|
|
2
|
+
|
|
3
|
+
Executed live against https://zambo.dev/mcp on November 2, 2026 (20:45 to
|
|
4
|
+
20:49 UTC). Job id (_session_id): `signal-watch-2026-11-02`. Pattern: one
|
|
5
|
+
watcher identity with its own server-issued caller handle, running the
|
|
6
|
+
package's own `watch.py`. Identity file: `identity-signal-watch.json` in
|
|
7
|
+
the build record (handle value lives there only). Working logs:
|
|
8
|
+
`work/run-baseline.log`, `work/run-check.log`, `work/run-check2.log` in
|
|
9
|
+
the build record.
|
|
10
|
+
|
|
11
|
+
## The watcher
|
|
12
|
+
|
|
13
|
+
| Agent | Role | Identity file |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| signal-watch-demo | Saves the baseline, checks against it, wraps the digest | `identity-signal-watch.json` (build record) |
|
|
16
|
+
|
|
17
|
+
A fresh identity, created for this run. It is not the heartbeat demo's
|
|
18
|
+
identity (the-18th-heartbeat-demo): a new handle, a new allowance, its
|
|
19
|
+
own memory. That is the pattern's point: the watch's state lives in the
|
|
20
|
+
watch's own memory, not in a file a human keeps.
|
|
21
|
+
|
|
22
|
+
## The rule
|
|
23
|
+
|
|
24
|
+
Alert when any watched asset moves 3 percent or more from its baseline.
|
|
25
|
+
Watched assets: BTC, ETH, SOL, priced by `live_price`.
|
|
26
|
+
|
|
27
|
+
## Pass 1: baseline (watch.py baseline)
|
|
28
|
+
|
|
29
|
+
1. Initialized; the endpoint issued a caller handle; saved before any
|
|
30
|
+
other call.
|
|
31
|
+
2. `live_price` BTC at $76,800.00. Receipt:
|
|
32
|
+
https://zambo.dev/run/a78b8851-5ab7-4b4d-bf70-a90a46a87b6c
|
|
33
|
+
3. `live_price` ETH at $2,244.62. Receipt:
|
|
34
|
+
https://zambo.dev/run/b1adb980-2b13-4680-bc97-2b3b4e54c745
|
|
35
|
+
4. `live_price` SOL at $91.29. Receipt:
|
|
36
|
+
https://zambo.dev/run/25da9cc8-616d-4383-9498-3aaad7ee5f27
|
|
37
|
+
5. `memory_remember` saved the baseline fact: the three prices, the
|
|
38
|
+
rule, and the three price receipts, under the job id. Receipt:
|
|
39
|
+
https://zambo.dev/run/a6fe88a7-a882-4880-90f8-5437bb05aa7d
|
|
40
|
+
|
|
41
|
+
## Pass 2: check (watch.py check, first attempt)
|
|
42
|
+
|
|
43
|
+
Minutes later, the check pass recalled memory, re-priced, saved the
|
|
44
|
+
reading, and wrapped a digest. Its numbers: BTC $76,802.00, ETH
|
|
45
|
+
$2,245.12, SOL $91.32; moves +0.00, +0.02, +0.03 percent; no alert.
|
|
46
|
+
Reading receipt: https://zambo.dev/run/93e27d2d-0500-4d57-b3a7-9266e06f2806
|
|
47
|
+
Digest handover: https://zambo.dev/handover/8654e4d4-765a-47ef-955a-fa67e84cab6d
|
|
48
|
+
|
|
49
|
+
Recorded honestly: in this pass the baseline values were completed from
|
|
50
|
+
the watch's local state file because the first version of the baseline
|
|
51
|
+
parser missed the decimal point in the recalled fact's numbers. The
|
|
52
|
+
recall itself returned the baseline fact in full; the parser was the
|
|
53
|
+
only gap. The parser was fixed, the fix was proven against a fresh
|
|
54
|
+
recall (all three baselines extracted from memory text alone), and the
|
|
55
|
+
canonical check pass below was run with the fixed, shipped code.
|
|
56
|
+
|
|
57
|
+
## Pass 3: check (watch.py check, shipped code, canonical)
|
|
58
|
+
|
|
59
|
+
1. `memory_recall` returned the baseline fact; the parser extracted all
|
|
60
|
+
three baselines from the recalled text alone: BTC 76800.0, ETH
|
|
61
|
+
2244.62, SOL 91.29. Verbatim the values saved in pass 1.
|
|
62
|
+
2. `live_price` BTC at $76,793.00. Receipt:
|
|
63
|
+
https://zambo.dev/run/cb8202ea-3913-468f-b7b8-f281c8cf6122
|
|
64
|
+
3. `live_price` ETH at $2,245.12. Receipt:
|
|
65
|
+
https://zambo.dev/run/adf91ada-41b8-4253-a396-54fa019d5bdd
|
|
66
|
+
4. `live_price` SOL at $91.34. Receipt:
|
|
67
|
+
https://zambo.dev/run/598d63b7-8144-46f8-9707-b4a15169acd8
|
|
68
|
+
5. Moves computed against the recalled baselines: BTC -0.01 percent,
|
|
69
|
+
ETH +0.02 percent, SOL +0.05 percent. The rule was applied exactly
|
|
70
|
+
as stated: no asset reached 3 percent, so NO ALERT. The quiet
|
|
71
|
+
outcome is the honest outcome for a check run minutes after its
|
|
72
|
+
baseline; the digest says so, in so many words.
|
|
73
|
+
6. `memory_remember` saved the reading. Receipt:
|
|
74
|
+
https://zambo.dev/run/12b0616b-e825-4574-9501-ac88ef06f2d6
|
|
75
|
+
7. The digest wrap (`handover`, the day's free wrap-up): the quiet-day
|
|
76
|
+
format, naming every price, every move, and the rule's outcome.
|
|
77
|
+
Digest handover:
|
|
78
|
+
https://zambo.dev/handover/121aa53f-1981-4330-9133-49e386aabf1e
|
|
79
|
+
Wrap receipts:
|
|
80
|
+
https://zambo.dev/run/1fb43864-4cac-4c0f-a8d3-a3c495fa82b9
|
|
81
|
+
https://zambo.dev/run/75facd71-b2d0-4812-ab5d-8df6d26fe089
|
|
82
|
+
|
|
83
|
+
## Free-tier accounting
|
|
84
|
+
|
|
85
|
+
Counted calls key to the watcher's own handle. The documented passes:
|
|
86
|
+
baseline 4 (3 prices + the baseline save); each check 5 (the recall, 3
|
|
87
|
+
prices, the reading save); each digest wrap free. Three passes plus one
|
|
88
|
+
extra recall to prove the parser fix: 15 counted calls, inside the 20
|
|
89
|
+
free calls for the day, zero paid calls. (A transport rehearsal before
|
|
90
|
+
the baseline pass cost a few extra price reads against the same handle;
|
|
91
|
+
the pattern run cleanly costs 4 once, then 5 per check.) Run daily, a
|
|
92
|
+
watch shaped like this costs 5 counted calls a day after day one.
|
|
93
|
+
|
|
94
|
+
## Mechanics that differed from the naive pattern (teach only these)
|
|
95
|
+
|
|
96
|
+
- The baseline is a remembered fact, not a config file. The check pass
|
|
97
|
+
recalls it from the endpoint's memory under the watch's handle; the
|
|
98
|
+
local state file holds the identity, and only a fallback copy of the
|
|
99
|
+
numbers.
|
|
100
|
+
- Save the reading either way. A quiet day with no saved reading is a
|
|
101
|
+
gap in the record exactly when you later need to prove the watch was
|
|
102
|
+
running. The digest wraps on quiet days too, in the quiet format.
|
|
103
|
+
- A receipt proves the saved result was not changed since it was
|
|
104
|
+
saved. It does not prove the price was right, and the digest never
|
|
105
|
+
claims otherwise.
|
|
106
|
+
|
|
107
|
+
## Verification
|
|
108
|
+
|
|
109
|
+
Every link above was fetched on 2026-11-02 after the run: all returned
|
|
110
|
+
HTTP 200 (16 of 16, including both digest handovers and every price,
|
|
111
|
+
remember, and wrap receipt).
|