Agentsor receives
A bounded run receipt
Status, timestamps, bounded row and byte counts, fixed result codes, and project-keyed contract, schema, and output fingerprints.
Daily partner feeds · SFTP, S3, or cron pickup
Keep the downloader and transfer credentials you already operate. Add one local command after it succeeds to check readability, schema, freshness, and volume, then send a file-content-free result. A rolling hosted deadline catches a pickup or reporter that stays silent past the selected cadence and fixed grace.
Agentsor is not an SFTP client, managed file-transfer service, or directory watcher. This guide starts after your existing job has downloaded one completed file.
1 · Put the check after pickup
Your existing SFTP, S3, managed-transfer, or export job should download to a temporary name, expose the final file only after the transfer is complete, and exit nonzero when pickup fails. Run the verifier only after that job succeeds.
The downloader should continue reading credentials from its existing protected configuration, secret store, or SSH agent. Do not copy a transfer hostname, username, private key, bucket name, or customer identifier into Agentsor.
Agentsor receives
Status, timestamps, bounded row and byte counts, fixed result codes, and project-keyed contract, schema, and output fingerprints.
Agentsor does not receive
Rows, values, samples, filenames, paths, hostnames, bucket names, transfer credentials, or arbitrary notes.
2 · Install
Python 3.11 or newer is required. Confirm with python3 --version. Local checks work without an Agentsor account.
python3 --version
mkdir -p ~/.local/share/agentsor-file
install -d -m 700 ~/.config/agentsor
python3 -m venv ~/.local/share/agentsor-file/venv
~/.local/share/agentsor-file/venv/bin/python -m pip install agentsor-file==0.2.3
3 · Define and test the contract
This example starts with CSV. For Parquet, use --format parquet and a completed .parquet path. Review the generated schema, compatible types, row and byte bounds, and optional event-time freshness rule before relying on the result.
The command returns 0 only when every required observation passes. Failed or inconclusive evidence returns nonzero.
~/.local/share/agentsor-file/venv/bin/agentsor-file init \
--format csv \
--contract ~/.config/agentsor/partner-feed.toml \
--fingerprint-key-file ~/.config/agentsor/partner-feed.key
# Edit [schema], bounds, and optional event-time freshness first.
${EDITOR:-vi} ~/.config/agentsor/partner-feed.toml
~/.local/share/agentsor-file/venv/bin/agentsor-file check \
YOUR_ABSOLUTE_DOWNLOADED_FEED.csv \
--contract ~/.config/agentsor/partner-feed.toml \
--fingerprint-key-file ~/.config/agentsor/partner-feed.key
4 · Join pickup and reporting
Create one free monitor with the feed's real cadence and displayed fixed grace, then store the one-time ingest token in the owner-only token path shown after activation. The rolling deadline begins at activation and advances after each accepted receipt; it is not a configurable wall-clock arrival time. Add the reporter to the success path of the job you already schedule.
#!/bin/sh
set -eu
# This command remains customer-owned and must exit nonzero on failure.
YOUR_EXISTING_SFTP_S3_OR_EXPORT_COMMAND
exec "$HOME/.local/share/agentsor-file/venv/bin/agentsor-file" report \
YOUR_ABSOLUTE_DOWNLOADED_FEED.csv \
--contract "$HOME/.config/agentsor/partner-feed.toml" \
--fingerprint-key-file "$HOME/.config/agentsor/partner-feed.key" \
--token-file "$HOME/.config/agentsor/file-token"
If pickup fails before report, no receipt arrives and the rolling cadence-plus-grace deadline eventually opens a missed-run incident. If the completed file is unreadable, stale under your configured event-time rule, outside its row or byte bounds, or violates the configured schema, the CLI submits a fixed redacted result and exits nonzero.
Do not place the ingest token or transfer credentials in this script, a shell argument, source control, or logs. Keep using protected files or the credential mechanism your downloader already uses.
5 · Prove both failure paths
First run the wrapper with a deliberately non-production fixture that violates one configured bound and confirm a failed local result. For silence, omit one receipt only in a controlled environment and wait through the monitor's actual cadence plus displayed grace, then resume the real job. Cadence cannot be edited in free early access. A separate test monitor must be closed manually by the verified account holder.
Confirms the local contract, redacted submission, nonzero exit, and failed-run transition.
Confirms the selected cadence and grace window can detect silence from pickup or reporting.
Confirms a later passing run resolves the incident and advances the next deadline.
A passing receipt does not prove that an upstream partner sent the correct business values or that downstream processing succeeded. It proves only the checks configured and observed by the local verifier.
Start with one real partner feed
Free early access creates one monitor after business-email verification. There is no paid plan, dashboard, automatic trial, renewal, or charge.
Monitor one feed free