Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/agigante80/actual-sync/local-envgit clone --depth 1 https://github.com/agigante80/Actual-syncWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/agigante80/actual-sync/local-env)<a href="https://agentmods.dev/commands/agigante80/actual-sync/local-env"><img src="https://agentmods.dev/badge/commands/agigante80/actual-sync/local-env.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.00890 |
| Opus 5 | $0.00000 | $0.00445 |
| Sonnet 5 | $0.00000 | $0.00178 |
| Haiku 4.5 | $0.00000 | $0.00089 |
Grade A, and why
local-env scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Local environment — build and test actual-sync
Builds actual-sync from the local dev source and runs it against the local Actual Budget instance.
Paths
Every command below is written against two variables so nothing here hardcodes a machine-specific home directory. Set them once per shell:
# Where the local docker stacks live (adjust to your machine)
export LOCAL_ENV="$HOME/docker/librechat-MCP-actual"
# This repo checkout — from inside the repo, just use the git root
export REPO_ROOT="$(git rev-parse --show-toplevel)"
Environment layout
$LOCAL_ENV/
├── actual-sync/ ← builds from $REPO_ROOT
│ ├── docker-compose.yml
│ ├── Dockerfile
│ └── config/config.json ← two servers: "Main's Budget" + "TEST BLANK"
└── Finance-actual-budget/ ← local Actual Budget server (port 5006)
The docker-compose.yml uses a build.context pointing at the local dev repo, so every docker compose up --build picks up uncommitted source changes.
Note: the repo is reachable at two paths on the dev machine (a
Sync/…path and adev-github-personal/…path). They resolve to the same checkout, not copies —readlink -fboth if you need to confirm. Use$REPO_ROOTand the distinction stops mattering.
Start the local Actual Budget server (if not running)
cd "$LOCAL_ENV/Finance-actual-budget"
docker compose up -d
Actual Budget available at: http://localhost:5006
Build and start actual-sync from local source
cd "$LOCAL_ENV/actual-sync"
docker compose up --build -d
Dashboard: http://localhost:3000/dashboard
Health: http://localhost:3000/health
Force a sync run (bypass scheduler)
# All servers
docker compose -f "$LOCAL_ENV/actual-sync/docker-compose.yml" \
exec actual-sync node index.js --force-run
# One specific server
docker compose -f "$LOCAL_ENV/actual-sync/docker-compose.yml" \
exec actual-sync node index.js --force-run --server "Main's Budget"
Validate config inside the container
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 112 lines · 0 tokens per session scan A d74c1d3a049d
local-env is a command published in the GitHub repository agigante80/Actual-sync (12 stars, last pushed 2d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 890 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.
Other commands, from other repositories
traefik-discovery
Apply the CLI runtime and safety contract before executing a command. Runtime --help is authoritative.
runtime-logs
Apply the CLI runtime and safety contract before executing a command. Runtime --help is authoritative.
docker-sdk
This skill fetches and cross-references the Docker SDK for Python documentation to.
compose-down
Stop a Compose stack on a server. Default 'stop' (keeps it indexed); --remove for full 'down'. Critical projects need --confirm= .
compose-up
Start a Compose stack on a server (up -d). Scope-gated (dockercompose). Use --file to bring up a not-yet-indexed stack.
compose-update
Pull latest images and recreate a Compose stack (pull + up -d). Scope-gated; critical projects need --confirm= .