โ–ธ Documentation

Products

AsanagiIDX

A self-hosted MLS listing platform built on AsanagiDB. It ingests a RESO Web API feed, keeps a normalized copy of your listings in a graph, stores photos in an object store you control, and serves a REST search API to your own website.

Overview

AsanagiIDX is a program you install next to your own website. It pulls your feed from MLS Grid's RESO Web API on a schedule, maps each listing, agent, office, and open house into AsanagiDB as connected records, downloads listing photos into an S3-compatible or local object store, and exposes a plain REST API your pages query directly. You run it; you hold the data and the MLS credentials.

MLS Grid RESO Web API โ”€โ”€โ–บ asanagidb-idx (sync loop + REST API) โ”€โ”€โ–บ AsanagiDB
                                          โ”‚
                                REST listing & search API
                                          โ”‚
                                          โ–ผ
                              Your website

Availability

AsanagiIDX is not yet available for download โ€” packaging is in progress. Pricing is final and listed on the product page. For an early build for your brokerage, contact [email protected]. The sections below describe how it installs and runs when it ships.

Installation

AsanagiIDX installs the same way as the rest of the suite: download the release archive for your platform from this site and extract it. The archive is self-contained โ€” it bundles asanagidb โ€” so there is nothing to install first. It is not distributed through Homebrew.

# Validate the environment, database, and live MLS Grid endpoint
asanagidb-idx check-config --config ./idx.yaml

# Start the sync loop and REST API
asanagidb-idx serve --config ./idx.yaml

Run check-config before a deployment goes into service โ€” it fails fast on a bad credential, an unreachable endpoint, or a database that isn't ready.

Configuration

Configuration is a single YAML file. Supply your own MLS Grid subscription and credentials, the object store for media, and the AsanagiDB connection.

server:
  port: 8090

database:
  url: "ws://127.0.0.1:8182/gremlin"
  name: "idx"

mls_grid:
  token: "YOUR_MLS_GRID_TOKEN"
  dataset: "YOUR_ORIGINATING_SYSTEM"
  sync_interval_sec: 300

media:
  backend: "s3"          # s3 | fs
  bucket: "idx-media"
  endpoint: "https://s3.us-east-1.amazonaws.com"

Exact keys are documented in the archive's idx.yaml.example.

REST API

AsanagiIDX serves a plain HTTP API for listing search and detail. It is REST and JSON โ€” there is no GraphQL endpoint and no client SDK to install; call it with whatever HTTP client your site already uses.

GET /v1/listings Query listings with structured filters (price, beds, baths, city, status, property type) and pagination
GET /v1/listings/:key Fetch one listing with its media, listing agent, and office
GET /v1/media/:key Serve a listing photo from the object store
GET /healthz Liveness and feed-health probe
# Active 3+ bed homes in Austin under $750k
curl "http://localhost:8090/v1/listings?city=Austin&minBeds=3&maxPrice=750000&status=Active"

Licensing

AsanagiIDX is a single named license that includes the AsanagiDB entitlement it needs โ€” there is no separate AsanagiDB purchase. Place the license file where the bundled engine reads it (~/.asanagi/license.json). An unlicensed instance still syncs and serves, but runs with the unlicensed map-size ceiling and logs a notice. The license is bound to one MLS feed and, at general availability, to the website domain you register at checkout.