Self-hosted fuzzy matching and duplicate detection API. Your data never leaves your network.
1.1K
Self-hosted fuzzy matching and duplicate detection API. Deploy on your own infrastructure -- your data never leaves your network.
Exis Echo Docker is the on-premise edition of ExisEcho, the world's most flexible fuzzy logic deduplication system. It bundles the full fuzzy matching API, an admin configuration UI, and a ready-to-deploy Excel Add-in into a single Docker container.
docker run -d \
--name exisecho \
-p 8080:8080 \
-v exisecho-data:/app/data \
exisllc/exisecho-docker:latest
Open http://localhost:8080 in your browser to access the admin panel.
| Component | Description |
|---|---|
| Fuzzy Match API | POST /api/match and POST /api/compare -- same endpoints as the cloud version. No API key required. |
| Admin UI | Single-page admin panel for license activation, API testing, Python code examples, and Excel Add-in deployment. |
| Excel Add-in | Pre-built Office Add-in served from the container. Generate a sideload manifest from the admin panel and deploy to your org. |
| Health Check | GET /api/health -- always available for monitoring and orchestration. |
| Method | Path | Description |
|---|---|---|
POST | /api/match | Find duplicates within a single dataset (up to 10,000 records) |
POST | /api/compare | Compare two datasets to find matches between them |
GET | /api/health | Health check (always returns 200 when running) |
GET | / | Admin UI |
GET | /Support | Support page |
import requests
result = requests.post("http://localhost:8080/api/match", json={
"records": [
{"id": "1", "fields": {"name": "John Smith", "city": "New York"}},
{"id": "2", "fields": {"name": "Jon Smyth", "city": "NYC"}},
{"id": "3", "fields": {"name": "Jane Doe", "city": "Boston"}}
],
"matchingColumns": ["name", "city"],
"threshold": 0.7,
"columnOptions": {
"name": {"usePhoneticMatching": True, "equateSynonyms": True},
"city": {"equateAddressAbbreviations": True}
}
}).json()
for match in result["matches"]:
print(f"{match['record1Id']} <-> {match['record2Id']}: {match['score']:.0%}")
Mount a Docker volume to /app/data to persist:
Without a volume, restarting the container will lose your license activation and consume a new seat.
# Named volume (recommended)
docker run -v exisecho-data:/app/data -p 8080:8080 exisllc/exisecho-docker
# Bind mount to host directory
docker run -v /opt/exisecho/data:/app/data -p 8080:8080 exisllc/exisecho-docker
services:
exisecho:
image: exisllc/exisecho-docker:latest
ports:
- "8080:8080"
volumes:
- exisecho-data:/app/data
restart: unless-stopped
volumes:
exisecho-data:
Exis Echo Docker includes a 14-day free trial that starts automatically on first run. During the trial, all features are fully functional with no limits.
After the trial expires, all API endpoints return 403 Forbidden until a license is activated. Activate your license through the admin UI at http://your-server:8080 (License tab).
Purchase a license at fuzzy-logic.com or contact sales at [email protected].
The container serves a self-hosted Excel Add-in that connects directly to this server:
No API key is needed. No data leaves your network.
| Environment Variable | Default | Description |
|---|---|---|
ASPNETCORE_URLS | http://+:8080 | Listen address and port |
DataDirectory | /app/data | Path to persistent data directory |
ASPNETCORE_ENVIRONMENT | Production | Set to Development for verbose logging |
docker run -p 9090:9090 -e ASPNETCORE_URLS=http://+:9090 -v exisecho-data:/app/data exisllc/exisecho-docker
Place Nginx, Caddy, or Traefik in front of the container for TLS termination:
docker run -p 127.0.0.1:8080:8080 -v exisecho-data:/app/data exisllc/exisecho-docker
Then proxy https://exisecho.yourcompany.com to http://127.0.0.1:8080.
| Option | Type | Default | Description |
|---|---|---|---|
weight | number | 1.0 | Importance multiplier (0.1-10.0) |
usePhoneticMatching | bool | false | Sound-alike matching (Smith/Smyth) |
equateSynonyms | bool | false | Treat synonyms as equal (Bob=Robert) |
equateAddressAbbreviations | bool | false | Expand abbreviations (St=Street, NYC=New York) |
removeHonorifics | bool | false | Remove Mr., Mrs., Dr., etc. |
removePunctuation | bool | true | Strip special characters |
removeArticles | bool | false | Remove a, an, the |
ignoreCase | bool | true | Case-insensitive comparison |
ignoreWordOrder | bool | false | "John Smith" = "Smith John" |
matchingCharacters | int | 0 | Match first N chars only (0=all) |
removeCustomWords | array | null | Custom words to remove |
latest -- most recent stable release1.0.0 -- specific versionBuilt by Exis, LLC
Content type
Image
Digest
sha256:ca8d326a6…
Size
86.3 MB
Last updated
2 months ago
docker pull exisllc/exisecho-docker