DBDelve
DBDelve는 Rust 기반 빠른 다중 엔진 데이터베이스 클라이언트, 무료 오픈소스, 텔레메트리 없음
ThoughtSpot Visual Embed SDK용 툴 놀이터, 연결·임베드 선택·옵션 조정·코드 복사, 설정마다 공유 링크 제공
A tool-first playground for the ThoughtSpot Visual Embed SDK: connect, pick an embed, tweak options, and copy runnable SDK code. Every setup is a shareable link.
개발 도구JavaScript · CSSGitHub @BibekTS가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Connect → pick an embed → tweak → copy the code.
A tool-first playground for the ThoughtSpot Visual Embed SDK. Every setup is a shareable link.No build step, no framework.
Live demo · TSE best-practices guide · SDK docs
npm install
npm start # http://localhost:3000
Paste your instance URL in the top bar and click Connect. It uses browser-session auth, so keep a
tab logged into ThoughtSpot in the same browser. No .env, no keys.
One-time CORS step: add
http://localhost:3000under Develop → Customizations → Security Settings → CORS so the object pickers can load. The embed itself renders without it.
Pick an embed from the rail, choose a data object, tweak options, and copy from the SDK Code tab. Share copies a link that reproduces the setup. Secrets are never serialized, and links are sanitized on load.
| Rail item | SDK | Needs |
|---|---|---|
| Search Data | SearchEmbed | Model |
| Spotter AI | SpotterEmbed | Model |
| Spotter Chat (MCP) | Custom chat UI over the Spotter 3 MCP server (docs) | Model + the local server |
| Liveboard | LiveboardEmbed | Liveboard |
| Custom Liveboard | LiveboardEmbed + a host-native filter bar | Liveboard |
| AI Highlights | LiveboardEmbed + HostEvent.AIHighlights | Liveboard |
| Single Viz | LiveboardEmbed + vizId, or a standalone Answer | Liveboard + viz, or Answer |
| Drill-through | LiveboardEmbed + a host-rendered detail list over searchdata | Liveboard + detail Model |
| Full App | AppEmbed | — |
| AI Insights (REST) | Spotter REST, no iframe | Model |
| Integration | What it shows | Write-up |
|---|---|---|
| Drill-through | Point click → filtered detail Liveboard; "View detail" → event-grain rows rendered by the host | below |
| Download PDF | Callback action → viz rows → paginated client-side PDF | callback-action.md |
| Customize Export | Custom export flows from the embed | customize-export.md |
| Webhook Inbox | One webhook per recipient, with the rendered report attached | webhook-inbox-demo.md |
| Spotter Chat (MCP) | A chat UI over the Spotter MCP server, no iframe | spotter-mcp-chat.md |
Custom actions come in four types: Callback (runs host code), URL (opens a link with row
context), Write-back (POST /api/writeback stub) and Drill-down (re-renders a detail Liveboard).
Everything is configured in the Drill-through panel. No GUIDs are hardcoded, so it runs on any cluster.
EmbedEvent.VizPointClick attributes merge with host filters
and in-iframe filters (HostEvent.GetFilters); the detail Liveboard renders with them as runtime
filters.dataModelIds.modelColumnNames fetches rows via POST /api/rest/2.0/searchdata, pages with
record_offset past the 1,000-row cap, and renders them outside the iframe as a modal or a panel.
View payload shows the raw EmbedEvent.CustomAction payload.Gotchas:
modelColumnNames scopes to a visualization, not a column: the action shows on every cell of
that viz. Turn on Only drill from one column to refuse clicks on other cells.available_data_row_count equals the returned count on every page, so a short page is the only
end-of-data signal.searchdata runs under
the viewer's own token, so RLS applies.Requires SDK 1.43.0+ and cluster 10.14.0.cl+ for column scoping.
For testing trusted-auth tokens, groups, JIT and RLS claims:
npm run setup # creates .env: set THOUGHTSPOT_HOST, TS_SECRET_KEY, TS_DEFAULT_USERNAME
npm run doctor # mints a real test token, or reports the exact upstream error
npm start # .env is read at boot
Enable trusted authentication in ThoughtSpot first (Develop → Customizations → Security Settings) and copy the secret key. Then switch the top bar to Trusted token → Token claims…. The server holds the secret and mints short-lived tokens; the secret never reaches the browser.
auth/token/full): username, auto_create, org_id, group_identifiers[].auth/token/custom): variable_values[] for ABAC via ts_var(), optional
objects[], and persist_option: REPLACE so entitlements can't accumulate.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗