Give your AI agents a single entry point to access internal APIs and tools. Redact PII by default, audit every request, and control access, without modifying your existing services.
# Initial setup (one-time)
pnpm setup
# Run all services
pnpm run up- Dashboard: http://localhost:3000
- API: http://localhost:3001
npm install @entrys/clientBy default, the SDK connects to entrys.co. For self-hosted deployments, see below.
import Entry from "@entrys/client";
const entry = new Entry({
apiKey: process.env.ENTRYS_API_KEY
});
const customer = await entry.invoke("get_customer", {
params: { id: "123" }
});
// { name: "Jane Doe", email: "[REDACTED]", ... }For self-hosted deployments, also pass baseUrl:
const entry = new Entry({
apiKey: process.env.ENTRYS_API_KEY,
baseUrl: "http://localhost:3001"
});See packages/client/README.md for full SDK docs.
curl -X POST "https://api.entrys.co/v1/invoke/get_customer" \
-H "Content-Type: application/json" \
-H "x-api-key: $ENTRYS_API_KEY" \
-d '{"params": {"id": "123"}}'{
"ok": true,
"output": { "name": "Jane Doe", "email": "[REDACTED]" },
"meta": { "latencyMs": 234, "redactions": [{ "type": "email", "count": 1 }] }
}- Tool Versioning - Multiple versions per tool, activate/deactivate without changing agent code
- PII Redaction - Automatic scrubbing of emails, tokens, SSNs, API keys
- Audit Log - Full request history with redaction summaries
- Access Control - Per-agent tool permissions
- Rate Limiting - 60 req/min per agent/tool
Create .env files:
apps/api/.env
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/entrys?schema=public"
ADMIN_KEY="your-admin-key"
apps/web/.env
NUXT_API_URL="http://localhost:3001"
NUXT_ADMIN_KEY="your-admin-key"
NUXT_PUBLIC_API_URL="http://localhost:3001"
pnpm setup # Initial setup (database, dependencies, schema)
pnpm run up # Start all services (Docker + API + Web)
pnpm run down # Stop all services
pnpm run reboot # Restart all services
pnpm run status # Check service statusclear## Troubleshooting
-
API won’t start / “Authentication failed” for database
The Postgres container may have been created with different credentials. Recreate it:
docker compose down -v && pnpm run up -
Port 5433 already in use
The script will show what is using the port (process and/or Docker container) and will try the next free port (5434, 5435, 5436) so the app can start. To free 5433:docker stop $(docker ps -q -f 'publish=5433').