Redash helps you make sense of your data
Redash를 사용해 다양한 데이터 소스에 연결하고, 쿼리·시각화·공유하여 기업을 데이터 기반으로 전환합니다
테이블 탐색·SQL 실행·트랜잭션 내 행 편집·EXPLAIN 확인·스키마 다이어그램 표시, 로컬에서 계정·텔레메트리 없이
Browse tables, run SQL, edit rows in a transaction, read EXPLAIN plans and see your schema as a diagram, across every PostgreSQL server you run. Local, with no account and no telemetry.
데이터TypeScript · RustGitHub @EdneyMesquita온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A desktop PostgreSQL client: browse schemas, edit rows inside transactions, run SQL and read query plans.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An open-source, cross-platform PostgreSQL client built with Tauri (Rust) and React: a dense, IDE-style desktop app for browsing schemas, editing rows inside transactions, running SQL and reading query plans.
Status: early release. The core is in place and in daily use; expect rough edges. See PRODUCT.md for the scope and the roadmap.README 전문 보기 ↗An open-source, cross-platform PostgreSQL client built with Tauri (Rust) and React: a dense, IDE-style desktop app for browsing schemas, editing rows inside transactions, running SQL and reading query plans.
Website: https://pgstudio.nilpointer.tech
Status: early release. The core is in place and in daily use; expect rough edges. See PRODUCT.md for the scope and the roadmap.
postgres:// URI or host/port), TLS (sslmode up to verify-full, custom CA, client certificate), SSH tunnels (password or key, host keys pinned on first use), read-only connections, a pooler mode for PgBouncer/Supabase in transaction mode, folders and an identity color per connection. Export the ones you pick (a whole folder from its menu), folders included; import a Postgres Studio export or pgAdmin's servers.json into the folder you choose, its groups as subfolders.psql instead, per console or by default (Settings › Console), for its meta-commands (\d, \copy, \i, \gexec, \set, \if) and your ~/.psqlrc. Postgres Studio uses the psql it finds on your PATH, in Homebrew's libpq, Postgres.app or PostgreSQL's install folders, or one you pick; it doesn't download one. The connection's password reaches psql through its environment, never its command line. Result sets land in the same grid, psql's output streams into Messages, and Cancel or a time limit stops the run.COPY ... FROM stdin blocks included), stop or continue on errors, with progress and the failing lines.EXPLAIN and EXPLAIN (ANALYZE, BUFFERS) (rolled back) as a tree with time per node and estimated against actual rows.pg_dump (custom, directory, tar, plain) and pg_restore / psql, with the client tools already on the machine.cypher() calls highlighted and completed for Apache AGE, vertices and edges shown readably; pgvector values shown compactly, with the distance operators and index opclasses in completion.http://127.0.0.1:47432/mcp (the port is yours to change; a port in use is reported, never swapped), with a bearer token kept in the keychain. Off by default and only while the app runs. Each capability - browsing (always on), reading, writing rows, schema changes, any SQL, seeing, editing and deleting connections, saving scripts - is Off, Ask (an approval card in the app with the SQL and, for writes, a dry run that counts the rows it changes and is rolled back) or Allow; each connection is None, Read or Read & write. Reads run in a read-only transaction. "Add to <client>" writes the server's entry, token included, into that client's own config file (~/.claude.json through claude mcp add, ~/.cursor/mcp.json, ~/.codex/config.toml, VS Code's user mcp.json), keeping the rest of the file and a .bak copy. Passwords and full connection strings never reach a client.Postgres Studio keeps a log file, so a failed connection or a crash can be looked into after the fact. To find it, open the command palette (Ctrl/Cmd+K) and choose Open logs folder. The crash screen has the same button. The file is postgres-studio.log in:
| OS | Folder |
|---|---|
| Windows | %LOCALAPPDATA%\com.edneymesquita.postgres-studio\logs |
| macOS | ~/Library/Logs/com.edneymesquita.postgres-studio |
| Linux | $XDG_DATA_HOME/com.edneymesquita.postgres-studio/logs, usually ~/.local/share/com.edneymesquita.postgres-studio/logs |
When the file reaches 5 MB it is renamed with a timestamp and a new one is started. The five most recent old files are kept.
What's never logged: passwords, passphrases or other secrets; connection strings (only the hosts, with no user or options); SQL text or row values. When a query fails, only the kind of error and the server's SQLSTATE are written, because the server's message can quote your data.
Prerequisites:
rustup)npm install
npm run tauri dev
A local server with sample data (a shop database with foreign keys, an enum, jsonb and citext columns):
docker compose -f docker-compose.dev.yml up -d
Backend tests:
cd src-tauri
cargo test
Integration tests that talk to a real PostgreSQL are marked #[ignore]. With the dev server up, run them explicitly:
export POSTGRES_STUDIO_TEST_URI="postgres://postgres:postgres@localhost:5433/shop"
cargo test --lib -- --ignored
The TimescaleDB support has its own server in the same compose file (docker compose -f docker-compose.dev.yml up -d timescale, port 5436, database tsdb). Its live tests share that seed, so they run one at a time:
export POSTGRES_STUDIO_TIMESCALE_URI="postgres://postgres:postgres@localhost:5436/tsdb"
cargo test --lib -- --ignored --test-threads=1 timescale
scripts/bench.mjs times the backend's commands through the dev bridge (the same commands and JSON as the app's IPC), so an optimization can be measured before and after. It needs a bench database with a large table on the dev server:
docker exec postgres-studio-dev psql -U postgres -c "create database bench"
docker exec postgres-studio-dev psql -U postgres -d bench -c "create table big as select g as id, md5(g::text) as hash, (random()*1e6)::int as qty, now() - (g || ' seconds')::interval as created_at, jsonb_build_object('k', g) as meta, (g % 7 = 0) as flag, repeat('x', 40) as filler, gen_random_uuid() as uid, (random()*1000)::numeric(12,2) as price, null::text as empty from generate_series(1, 1000000) g; alter table big add primary key (id); analyze big;"
(cd src-tauri && cargo build --release --features devbridge --bin devbridge) && src-tauri/target/release/devbridge &
node scripts/bench.mjs <connection id> --runs 5
Startup is marked in the page as performance.mark("app-mounted") (the first React commit), next to the navigation timings.
npm run tauri build
Produces a platform-native installer (.dmg/.app on macOS, .msi/.exe on Windows, .deb/.rpm/.AppImage on Linux) under src-tauri/target/release/bundle/.
The source design is src-tauri/icons/icon-source.svg. After editing it, regenerate every platform variant with:
npx tauri icon src-tauri/icons/icon-source.svg
Pushing a tag matching vX.Y.Z triggers .github/workflows/release.yml, which builds installers for macOS (universal binary), Windows, and Linux and attaches them to a draft GitHub release for review before publishing. Builds are unsigned, so first launches will trip Gatekeeper (macOS) or SmartScreen (Windows) warnings until code signing is set up separately.
The Microsoft Store package (MSIX) is built by .github/workflows/microsoft-store.yml; see docs/microsoft-store.md.
MIT - see LICENSE.
PostgreSQL is a trademark of the PostgreSQL Community Association; Postgres Studio is an independent project, not affiliated with or endorsed by it.