Synx is a self-hosted harness: you run the stack on your own machine/server and operate it with your key. Nothing runs on our servers.
- Infra in Docker — postgres, redis, VVM (deterministic core), EEAPI (gate + ingress).
- Bare-metal AVM — the agent runtime ("the hands"). Runs directly on the host for native access to your filesystem and local tools, with every action governed by the gate.
- Docker (with
docker compose). - A model provider API key (Groq/OpenAI/OpenRouter/Anthropic) — or local Ollama.
- Go is not required: the AVM and the CLI ship as prebuilt binaries.
git clone git@github.com:peiblow/synx-init.git && cd synx-init
make init # installs binaries (avm+synx), generates YOUR key, prepares .env and contract.env
# edit .env → uncomment and fill in your provider key (e.g. GROQ_API_KEY=...)
make up # docker infra + bare-metal AVMmake ps shows status; make logs (docker) and make avm-logs (AVM).
Contracts declare config via getEnv("X"). Those keys are yours — they go in
contract.env (never in .env.example, never committed). Deploy lists what's missing:
synx deploy ./my-contract # reports which getEnv keys the contract requires
# fill those keys in contract.env
make restart-eeapi # mounts the triggers of the freshly deployed contractgetEnv resolves at runtime inside the VVM (actions) and the EEAPI (triggers) — the
secret never enters the artifact and the same contract runs in any environment.
Full CLI reference (build, deploy, ship, env, keys, synx.toml): see CLI.md.
If one of your contracts uses an fs-trigger, the EEAPI watcher needs to see your directory:
cp docker-compose.override.yaml.example docker-compose.override.yaml
# point the mount at your dir; the AVM (bare-metal) writes to the host without any mount- Never commit
.env,contract.envor tokens (already covered by.gitignore). - Every self-hoster has their own key (
make initgenerates it;~/.synx/deploy.key).
git pull && make update # re-fetches the binaries for the repo's new version
make down && make upDevelopment happens in the source monorepo, which nests this repo and adds the build
targets (make dev, make release) plus a compose override that builds vvm/eeapi
from source instead of pulling published images.