Deploy the full ExisEcho fuzzy matching engine on your own infrastructure. Same powerful API, same Excel Add-in, same matching algorithms — running entirely within your environment. 14-day free trial with no feature limits.
Why Self-Host?
Data Sovereignty
Sensitive data — customer records, patient files, financial data — never leaves your network. Meet HIPAA, GDPR, SOC 2, and internal compliance requirements without exception requests.
No Latency, No Bandwidth Costs
Process millions of records over your local network. No data uploaded to external servers, no round-trip latency, no cloud egress fees.
Air-Gapped & Offline Ready
Runs in disconnected environments, classified networks, or behind strict firewalls. Once the container is pulled, no internet connection is required to operate.
Full Control
Choose your own port, TLS termination, reverse proxy, and scaling strategy. Integrate into existing Docker Compose stacks or Kubernetes clusters.
No Record Limits
No cloud tier limits. Process datasets of any size directly through the API or the bundled Excel
Add-in. For very large jobs, the async endpoint (POST /api/match/async) queues the
work and returns a job id to poll — no HTTP timeouts to worry about.
Everything in One Container
The fuzzy matching API, admin UI, health checks, and a deployable Excel Add-in — all bundled into a single ~86 MB Docker image. No external databases or dependencies.
Who It's For
- Healthcare & life sciences — patient record matching under HIPAA. PHI stays on-premise.
- Financial services — KYC and AML screening without sending customer data to third parties.
- Government & defense — runs in air-gapped and classified environments.
- Enterprise IT — CRM and ERP deduplication inside your corporate network.
- Data teams — integrate fuzzy matching into ETL pipelines via the REST API.
Quick Start
docker run -d \ --name exisecho \ -p 8080:8080 \ -v exisecho-data:/app/data \ exisllc/exisecho-docker:latest
Open http://localhost:8080 to access the admin panel. The 14-day trial starts automatically — all features enabled, no registration required.
What's Inside
| Fuzzy Match API | POST /api/match and POST /api/compare — no API key required |
| Admin UI | License management, API docs, Python examples, system info |
| Excel Add-in | Download a sideload manifest from the admin panel and deploy to your organization |
| Health Check | GET /api/health — for monitoring and orchestration |
Run it in Docker Desktop (no command line)
If you'd rather avoid the terminal, Docker Desktop can pull and run ExisEcho entirely through its UI. These steps work on Windows, macOS, and Linux.
- Install & start Docker Desktop. Download it from docker.com/products/docker-desktop. Launch it and wait until the whale icon in the tray (Windows/macOS) shows Engine running.
-
Pull the image.
Click Search at the top of Docker Desktop, type
exisllc/exisecho-docker, pick the result, choose thelatesttag, and click Pull. -
Open the Run dialog.
Go to the Images tab, hover over
exisllc/exisecho-docker:latest, and click the Run button on the right (or the ▶ play icon at the top of the image detail view). -
Expand "Optional settings"
in the Run dialog and fill in:
- Container name:
exisecho(any name you like) - Ports → Host port:
8080— leave the container port as8080. If 8080 is already in use on your machine, pick something else like8081. - Volumes (optional but recommended):
set Host path to any folder on your computer and
Container path to
/app/data. This persists the hardware ID, trial state, and license across restarts.
- Container name:
-
Click Run.
Docker Desktop switches to the Containers tab. Your container should show a green dot
and
0.0.0.0:8080->8080/tcp(or your chosen port) under Port(s). - Open the admin UI. Browse to http://localhost:8080 (or the host port you chose). The 14-day trial starts automatically — no registration.
Common gotchas
- "Name already in use" when you click Run — you have an old container with the same name. Go to Containers, find the old one, click the ⋮ menu → Delete (stop it first if running), then run again.
- Blank Port(s) column after Run — you skipped the Host port field. Stop and delete the container, then Run again with a host port filled in.
- "This site can't be reached" in the browser — open the container's
Logs tab inside Docker Desktop. If you see
Now listening on: http://[::]:8080, the app is up; double-check the host port in the address bar. Otherwise the logs will show what went wrong. - Upgrading to a new version — pull the new tag in Images, stop & delete the old container, and Run the new image with the same name and same volume mapping so your license survives.
Docker Compose
services:
exisecho:
image: exisllc/exisecho-docker:latest
ports:
- "8080:8080"
volumes:
- exisecho-data:/app/data
restart: unless-stopped
volumes:
exisecho-data:
Matching Capabilities
The same algorithms available in the cloud API and desktop application:
- Trigram similarity — robust fuzzy matching that handles typos, transpositions, and misspellings
- Phonetic matching — catches "Smith" vs. "Smyth", "Jon" vs. "John"
- Synonym expansion — "Robert" matches "Bob", "Corp" matches "Corporation"
- Address normalization — "St" matches "Street", "NYC" matches "New York City"
- Per-column weights and options — fine-grained control over how each field is compared
- Parallel processing — takes advantage of all available CPU cores
Licensing
14-Day Free Trial
The trial starts automatically on first run. All features are fully functional with no record limits.
After 14 days, the API returns 403 Forbidden until a license is activated.
Purchase a license or contact sales for volume pricing.