A real database client
for phone and tablet.
폰과 태블릿을 위한
진짜 DB 클라이언트.
Rowsel is a mobile-first database client backed by a Rust execution proxy. Browse schemas, run read-only SQL, and keep credentials on your device.
Rowsel은 Rust 실행 프록시를 갖춘 모바일 우선 데이터베이스 클라이언트입니다. 스키마를 탐색하고, 읽기 전용 SQL을 실행하고, 자격 증명은 기기에 보관하세요.
analytics-prod · analytics
| # | id | status | user_id | total_cents |
|---|---|---|---|---|
| int8 | text | int8 | int4 | |
| 1 | 1004821 | paid | 88241 | 12990 |
| 2 | 1004820 | pending | 102017 | 4990 |
| 3 | 1004819 | paid | 14029 | 38900 |
| 4 | 1004818 | refunded | 99021 | 8990 |
| 5 | 1004817 | paid | 14801 | 22500 |
SELECT * FROM orders // features
// 기능
Everything a DB client needs, sized for a small screen.
DB 클라이언트에 필요한 모든 것, 작은 화면에 맞게.
Mobile-native DataGrid
모바일 네이티브 DataGrid
A virtualized, paged result grid designed for thumb and tablet scrolling — not a desktop table crammed into a phone.
가상화·페이징된 결과 그리드 — 데스크톱 표를 폰에 욱여넣지 않고 엄지·태블릿 스크롤에 맞게 설계했습니다.
Rust execution proxy
Rust 실행 프록시
A high-performance proxy on axum · sqlx · russh mediates every connection, offloading the device's battery and network.
axum · sqlx · russh 기반 고성능 프록시가 모든 연결을 중계해 기기의 배터리와 네트워크를 오프로딩합니다.
Read-only by default
기본 읽기 전용
SQL is parsed and classified so only reads run — wrapped in a READ ONLY transaction with forced LIMIT and timeouts.
SQL을 파싱·분류해 읽기만 실행하며, READ ONLY 트랜잭션 안에서 강제 LIMIT·타임아웃과 함께 돌립니다.
Credentials stay on device
자격 증명은 기기에
Secrets live in secure device storage and travel with each request. The proxy passes them through — it never stores them.
비밀은 기기 보안 저장소에 보관되어 요청마다 전달됩니다. 프록시는 통과시킬 뿐, 저장하지 않습니다.
Schema explorer & history
스키마 탐색기 & 기록
Drill schema → table → data, and re-run any past query with a single tap from your history.
스키마 → 테이블 → 데이터로 드릴인하고, 지난 쿼리를 기록에서 한 번에 다시 실행하세요.
SSH tunnel & self-host
SSH 터널 & 자가 호스팅
Reach private databases through a bastion, and self-host the whole proxy from a single container.
바스티온을 통해 사설 DB에 접근하고, 컨테이너 하나로 프록시 전체를 직접 호스팅하세요.
// architecture
// 아키텍처
How it works
동작 방식
Your encrypted credentials travel with each request over HTTPS to a Rust proxy that enforces policy, then on to your Postgres — directly or through an SSH bastion.
암호화된 자격 증명이 요청마다 HTTPS로 정책을 강제하는 Rust 프록시까지 전달되고, 거기서 Postgres로 — 직접 또는 SSH 바스티온을 거쳐 — 이어집니다.
Phone & tablet
폰 & 태블릿
- encrypted credentials
- secure device storage
- thumb-first UI
- 암호화된 자격 증명
- 기기 보안 저장소
- 엄지 우선 UI
per-requestHTTPS
요청마다
Execution proxy
실행 프록시
- read-only policy
- paging & LIMIT
- statement timeouts
- error normalization
- 읽기 전용 정책
- 페이징 & LIMIT
- 구문 타임아웃
- 에러 정규화
or SSH bastion직접
또는 SSH 바스티온
Your Postgres
내 Postgres
- direct connection
- SSH tunnel / bastion
- adapter-extensible
- 직접 연결
- SSH 터널 / 바스티온
- 어댑터 확장 가능
// the problem
// 문제
Mobile database access is awkward and unsafe.
모바일에서 DB 접근은 불편하고 위험합니다.
Desktop clients weren't built for thumbs. And pointing a phone straight at production means raw credentials on the device, no guardrails, and one fat-fingered UPDATE away from disaster.
데스크톱 클라이언트는 손가락 터치를 염두에 두고 만들어지지 않았습니다. 게다가 폰을 프로덕션에 곧장 연결하면 기기에 원본 자격 증명이 남고, 가드레일도 없고, 잘못 누른 UPDATE 한 번이면 재앙입니다.
Desktop tables, jammed into a phone
폰에 욱여넣은 데스크톱 표
Pinch-zooming a thousand-column grid on the train isn't a workflow.
지하철에서 천 컬럼짜리 그리드를 핀치 줌 하는 건 워크플로가 아닙니다.
Credentials and queries, unguarded
무방비 상태의 자격 증명과 쿼리
Direct connections mean stored secrets and unbounded writes on a device you might lose.
직접 연결은 잃어버릴 수도 있는 기기에 비밀을 저장하고 무제한 쓰기를 허용한다는 뜻입니다.
Rowsel puts a proxy in between
Rowsel은 사이에 프록시를 둡니다
A Rust execution proxy mediates every connection — offloading work, enforcing read-only policy, and keeping secrets on the device.
Rust 실행 프록시가 모든 연결을 중계하여 작업을 오프로딩하고, 읽기 전용 정책을 강제하며, 비밀은 기기에 남깁니다.
// security
// 보안
Safe to point at production.
프로덕션에 연결해도 안전합니다.
Read-only isn't a setting you remember to flip — it's enforced in the proxy, on every request, by default.
읽기 전용은 깜빡하고 켜는 설정이 아닙니다 — 프록시에서 모든 요청마다 기본으로 강제됩니다.
Credentials never leave the device
자격 증명은 기기를 떠나지 않습니다
Stored in the OS secure enclave; passed per-request, never persisted by the proxy.
OS 보안 영역에 저장되어 요청마다 전달되며, 프록시는 절대 저장하지 않습니다.
Read-only AST classification
읽기 전용 AST 분류
Statements are parsed and classified, then run inside BEGIN READ ONLY.
구문을 파싱·분류한 뒤 BEGIN READ ONLY 안에서 실행합니다.
Forced page size & statement timeout
강제 페이지 크기 & 구문 타임아웃
Every query is capped and time-boxed, so a stray scan can't take a database down.
모든 쿼리가 상한과 시간 제한을 가져, 잘못된 스캔이 DB를 멈추게 할 수 없습니다.
Result rows aren't logged by default
결과 행은 기본적으로 로깅되지 않습니다
The proxy moves data through; it doesn't keep your rows in logs.
프록시는 데이터를 통과시킬 뿐, 행을 로그에 남기지 않습니다.
Cloud-neutral self-hosting
클라우드 중립 자가 호스팅
Run the OCI image anywhere — your VPC, your rules, no vendor in the path.
OCI 이미지를 어디서나 실행하세요 — 당신의 VPC, 당신의 규칙, 중간 벤더 없음.
You run it, you own it
직접 호스팅, 직접 소유
Run the proxy inside your own network — your data and credentials never route through a third party.
프록시를 당신의 네트워크에서 직접 실행하세요 — 데이터와 자격 증명이 제3자를 거치지 않습니다.
// built with
// 기술 스택