Linux
Prerequisites
Section titled “Prerequisites”Python 3.11+ and git — the one-liners below clone each repo and
need both present on PATH; they’ll fail with a clear message naming
whichever is missing.
Development setup
Section titled “Development setup”Gateway
Section titled “Gateway”curl -sSL https://raw.githubusercontent.com/bantex01/VectorStep-Gateway/main/install-gateway.sh | bashThen edit ~/.vectorstep-gateway/config.yaml with your LLM provider keys,
add a first agent under agents/ (see Creating agents),
export your provider key, and start it:
cd ~/.vectorstep-gatewayexport ANTHROPIC_API_KEY=sk-ant-...source .venv/bin/activate && python -m gateway.main
# Find your operator token (auto-generated on first run)cat ~/.vectorstep-gateway/identity/device-auth.json# Copy the 'operator' token — you'll need it for VectorStep's configWhat the one-liner does, or set it up by hand
# 1. Install dependenciespython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
# 2. Copy and edit the config templatecp samples/config.yaml.example config.yaml# Edit config.yaml — set your LLM provider keys and MCP servers
# 3. Create your agents directorymkdir -p agents/my-agent# Add agent.yaml and soul.md — see Creating Agents below
# 4. Set environment variables for any ${VAR_NAME} placeholders in config.yamlexport ANTHROPIC_API_KEY=sk-ant-...
# 5. Start the gateway (host/port come from config.yaml's `server:` section)python -m gateway.main
# 6. Find your operator token (auto-generated on first run)cat ~/.vectorstep-gateway/identity/device-auth.json# Copy the 'operator' token — you'll need it for VectorStep's configBoth config.yaml and agents/ are gitignored — they contain personal
credentials and environment-specific agent definitions. Use
samples/config.yaml.example as your starting point.
VectorStep service
Section titled “VectorStep service”curl -sSL https://raw.githubusercontent.com/bantex01/VectorStep/main/install-service.sh | bashThen start it and try a test webhook:
cd ~/.vectorstep/servicesource .venv/bin/activate && uvicorn src.main:app --reload --port 8000
# Test webhook (alertmanager)curl -X POST "http://localhost:8000/webhook?source=alertmanager" \ -H "Content-Type: application/json" \ -d @tests/fixtures/alertmanager_critical.json
# Test webhook (generic source)curl -X POST "http://localhost:8000/webhook?source=generic" \ -H "Content-Type: application/json" \ -d @tests/fixtures/generic_new_order.jsonWhat the one-liner does, or set it up by hand
cd servicepython -m venv .venvsource .venv/bin/activatepip install -r ../requirements.txt # requirements.txt lives at the repo root
# Run serviceuvicorn src.main:app --reload --port 8000Running the test suite, including the Postgres test lane, is covered on Testing.
SQLite vs. Postgres
Section titled “SQLite vs. Postgres”The ORM layer (SQLAlchemy async) is dialect-agnostic — switching backends is
a database.url change only, no code changes. SQLite (zero infrastructure)
is right for this local setup; Postgres is for production.
Production (systemd)
Section titled “Production (systemd)”For a plain VM or instance without a container runtime, both repos ship
systemd units and a step-by-step install guide under deploy/systemd/
(install.md, *.service, env.example) — code in
/opt/vectorstep/<service>, config in /etc/vectorstep/<service>/, state in
/var/lib/vectorstep/<service>/, logs in /var/log/vectorstep/<service>/.
Both units support systemctl reload (pipelines/steps for VectorStep,
agents for the Gateway) without dropping the process; a code, dependency, or
database change needs systemctl restart.
Where next
Section titled “Where next”- Deployment — the full
config.yamlreference and database/migration mechanics. - Docker / Kubernetes — containerized alternatives to both paths above.