Conduit is a zero‑boilerplate REST engine that instantly exposes your database as a fully‑typed, multi‑format HTTP API.
It supports JSON, XML, YAML, TOML, NDJSON, and CSV — simultaneously — and works with any SQL database through a pluggable driver system.
Conduit eliminates the need to hand‑craft REST interfaces, controllers, serializers, or schema definitions.
Point it at a database, start the server, and your tables become live REST endpoints.
-
Multi‑format input & output
JSON, XML, YAML, TOML, NDJSON, CSV — all first‑class citizens. -
Database‑agnostic
Official drivers for SQLite, PostgreSQL, MySQL/MariaDB, and SQL Server. -
Zero‑code REST API generation
Every table becomes an endpoint automatically. -
Schema creation via API
Create new tables withPOST /v1/schema/<table>. -
Pluggable backend architecture
Swap databases or authorization modules without changing your API. -
Strong typing with graceful fallback
SQL types are preserved when possible; incompatible types (e.g., datetime) are safely represented as strings. -
Config‑driven behavior
Conduit auto‑detects config files in JSON, YAML, TOML, or XML. -
Simple deployment
Single static binary orgo install. -
MIT‑licensed open core
Free to use, extend, and integrate.
Conduit combines:
- Multi‑format I/O
- Database‑agnostic routing
- Instant REST generation
…into a single engine that requires no code to expose a fully functional API.
It's ideal for:
- Rapid prototyping
- Internal tools
- Data ingestion pipelines
- Multi‑format integrations
- Database‑first applications
- Enterprise environments needing consistent REST interfaces
┌────────────────────────────┐
│ HTTP Request │
│ JSON / XML / YAML / TOML │
└──────────────┬─────────────┘
▼
┌───────────────────┐
│ Format Parser │
└─────────┬─────────┘
▼
┌───────────────────┐
│ Conduit Core │
│ Routing + Auth │
└─────────┬─────────┘
▼
┌───────────────────┐
│ DB Driver API │
│ SQLite / PG / ... │
└─────────┬─────────┘
▼
┌───────────────────┐
│ SQL Database │
└─────────┬─────────┘
▼
┌────────────────────────────────┐
│ HTTP Response │
│ JSON / XML / YAML / TOML / CSV │
└────────────────────────────────┘
go install github.com/untappedtech/conduit@latestPrebuilt binaries are available under GitHub Releases.
git clone https://github.com/untappedtech/conduit
cd conduit
go build ./cmd/serverConduit automatically searches for a config file in this order:
config.jsonconfig.yamlconfig.ymlconfig.tomlconfig.xml
You can also specify one manually:
conduit --config ./myconfig.yamlOr generate a default config:
conduit --generate-config json
conduit --generate-config yaml
conduit --generate-config toml
conduit --generate-config xml{
"server": {
"host": "0.0.0.0",
"port": 8080
},
"database": {
"driver": "sqlite",
"dsn": "./app.db"
},
"policy": {
"publicReads": true,
"publicWrites": true,
"publicMutation": false
}
}Conduit supports three access levels:
Allows GET operations.
Allows GET, POST, PUT, PATCH, DELETE.
Allows creating new tables via:
POST /v1/schema/<tableName>
Allows deleting tables via:
DELETE /v1/schema/<tableName>
Access is controlled by:
- API keys
- Global flags:
publicReadspublicWritespublicMutation
Authorization modules are pluggable.
Every table becomes an endpoint:
| Method | Path | Description |
|---|---|---|
| GET | /v1/sports |
List rows |
| GET | /v1/sports/<id> |
Fetch a single row |
| POST | /v1/sports |
Insert a new row |
| PUT | /v1/sports/<id> |
Replace a row |
| PATCH | /v1/sports/<id> |
Update fields |
| DELETE | /v1/sports/<id> |
Delete a row |
| POST | /v1/schema/<table> |
Create a new table |
curl -X POST http://localhost:8080/v1/schema/players \
-H "Content-Type: application/json" \
-d '{
"columns": [
{ "name": "id", "type": "integer", "autoincrement": true, "pk": true },
{ "name": "name", "type": "text", "nullable": false },
{ "name": "number", "type": "integer" },
{ "name": "team_id", "type": "integer" }
]
}'curl -X POST http://localhost:8080/v1/players \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "number": 12, "team_id": 2}'curl -X POST http://localhost:8080/v1/players \
-H "Content-Type: application/x-yaml" \
-d '
name: Bob
number: 7
team_id: 1
'curl http://localhost:8080/v1/players?format=csvresp, err := http.Get("http://localhost:8080/v1/players")
if err != nil { panic(err) }
defer resp.Body.Close()
var players []map[string]interface{}
json.NewDecoder(resp.Body).Decode(&players)
fmt.Println(players)- SQLite
- PostgreSQL
- MySQL / MariaDB
- SQL Server
Drivers are pluggable — implement the interface and Conduit can speak to any SQL backend.
- Conduit does not require tables to exist ahead of time.
- Tables can be created dynamically via
/v1/schema/<table>. - Conduit does not perform migrations — it simply adapts to whatever schema exists.
Conduit v1.0.0 (Initial Release) focuses on:
- Multi‑format I/O
- Database‑agnostic routing
- Pluggable drivers
- Schema creation
- Authorization layers
Premium features (event bus, advanced output types, etc.) will be introduced later but are not included in this README.
MIT License
Open core model — free for commercial and private use.
Contributions are welcome.
Driver implementations, format handlers, and performance improvements are especially appreciated.
Conduit is built to make REST interfaces effortless — a universal, multi‑format bridge between your applications and your data.
