Repository navigation
Pull conversations from another asz, to judge and read them here - #92
Merged
Merged
Conversation
An asz that collects a product's agents now serves its conversations to other asz installations, and asz pull copies the ones a person picks. - asz view and asz server answer pulls when remote_server.tokens_file is set: every request on the address needs a token, the page too, with optional TLS and client certificates. asz token create makes a token; removing its line revokes it. - The server freezes a conversation's head into a snapshot it serves under a lease, and sends the files a client lacks as one tar.gz archive, fetched in ranges that resume where a connection broke. - asz pull -list lists what each remote holds; asz pull REMOTE/CONVERSATION keeps each pull as an immutable snapshot under _remote/, reusing what the newest valid snapshot holds and checking the evidence against the digests its rounds carry before it publishes. Snapshots expire after remote_snapshot_ttl. - asz judge -remote-conversation judges a pulled snapshot, and -pull pulls first. asz view lists pulled conversations beside the root's own, each title starting with [remote, NAME]. - Every write is built privately, synced and published by a rename, and an interrupted pull, sweep or server transition is recovered by the next one. A durability model tests a power loss at each step. - The protocol is docs/en/formats/asz-pull.md; setup, with a deployment diagram, is docs/en/setup/remote-pull.md. An end-to-end test runs servers in Docker Compose with TLS and tokens (make e2e-pull).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull conversations from another asz
A person judging an agent's conversations often wants them on their own machine, while asz collects
them somewhere else. This adds a pull between two asz installations: one serves its conversations,
and the other copies the ones a person picks, then judges and reads them locally.
What a person does
asz token createmakes a token on the serving side. Withremote_server.tokens_fileset,asz viewand
asz serveranswer pulls on their address, and every request there, the page too, needs a token.TLS and client certificates are optional.
remotes:names the servers.asz pull -listlists what each holds, with filtersand pages.
asz pull REMOTE/CONVERSATIONcopies one conversation's head as a snapshot.asz judge -remote-conversation REMOTE/CONVERSATION[:TAG]judges a snapshot, and-pullpulls first.asz viewlists pulled conversations beside the root's own, each title opened by[remote, NAME].Deployment
flowchart LR subgraph prod["Where the agents run, in a private network"] A["agents"] -->|"traces, sent over the network"| S["asz server<br/>collects and parses<br/>into its storage root<br/>page and pull routes on one address"] A -->|"transcripts and file changes"| D[("shared volume")] D -->|"collected"| S end subgraph me["Your machine"] P["asz pull -list<br/>asz pull prod/CONVERSATION"] --> R["snapshots under<br/>_remote/prod/CONVERSATION/TAG/"] R --> J["asz judge -remote-conversation"] R --> V["asz view<br/>rows titled [remote, prod]"] end P -->|"HTTPS, encrypted by TLS<br/>Authorization: Bearer TOKEN<br/>a client certificate, when asked"| SOne pull:
Configuration
The server, with tokens and TLS (
client_ca_filealso requires client certificates):The client:
Authorization: Bearer TOKEN, the page too. Theserver keeps only SHA-256 hashes, and deleting a line revokes that token within five seconds.
http://proxy.
How it works
snapshot_ttlafter its lastuse. A client takes a lease, asks for the files it does not hold as one tar.gz archive, and fetches it
in ranges of at most 8 MiB that resume where a connection broke.
_remote/REMOTE/CONVERSATION/TAG/, reuseswhat its newest valid snapshot holds, and checks the evidence against the digests its rounds carry
before it publishes. Snapshots, and the judge runs in them, expire after
remote_snapshot_ttl.pull, sweep or server transition is recovered by the next one. A fault model tests each step against
a power loss at that step.
The protocol is documented in
docs/en/formats/asz-pull.md, setup indocs/en/setup/remote-pull.md.Testing
removing it and seeing its test fail.
authentication and revocation (
make e2e-pull).has.
No production deployment has been measured: speed, compression and memory at production size are not
known yet.
Follow-up