DataZen: a 10 MB open-source database client built with Tauri and Rust
DataZen is a free, MIT-licensed desktop app for PostgreSQL, MySQL, SQLite, and Redis.
Why another client?
● TablePlus is great but paid for many teams
● DBeaver is powerful but heavy on RAM and startup time
DataZen targets daily dev work: connect, browse, run SQL, export — in a <10 MB installer.
Stack
● Tauri v2 + Rust backend (sqlx, redis, russh for SSH)
● React + CodeMirror 6 frontend
● Credentials encrypted locally (AES-256-GCM)
Features
● Multi-window workflow
● Built-in SSH tunnels (no local
● SQL editor with table/column autocomplete
● Virtual scrolling for large tables
● Backup to SQL, CSV/JSON import/export
● PG ↔ MySQL schema + data sync
● Redis key browser
● Dark theme, English + Chinese UI
Status
Early v0.0.3, but I use it as a daily driver for SQL + Redis.
● Download: https://github.com/flyxl/datazen/releases
● Site: https://flyxl.github.io/datazen/
● Repo: https://github.com/flyxl/datazen
macOS: if Gatekeeper blocks the app, run
Feedback: wuxiaolongklws@gmail.com (
via DEV Community: rust (author: flyxl)
DataZen is a free, MIT-licensed desktop app for PostgreSQL, MySQL, SQLite, and Redis.
Why another client?
● TablePlus is great but paid for many teams
● DBeaver is powerful but heavy on RAM and startup time
DataZen targets daily dev work: connect, browse, run SQL, export — in a <10 MB installer.
Stack
● Tauri v2 + Rust backend (sqlx, redis, russh for SSH)
● React + CodeMirror 6 frontend
● Credentials encrypted locally (AES-256-GCM)
Features
● Multi-window workflow
● Built-in SSH tunnels (no local
ssh binary)● SQL editor with table/column autocomplete
● Virtual scrolling for large tables
● Backup to SQL, CSV/JSON import/export
● PG ↔ MySQL schema + data sync
● Redis key browser
● Dark theme, English + Chinese UI
Status
Early v0.0.3, but I use it as a daily driver for SQL + Redis.
● Download: https://github.com/flyxl/datazen/releases
● Site: https://flyxl.github.io/datazen/
● Repo: https://github.com/flyxl/datazen
macOS: if Gatekeeper blocks the app, run
xattr -cr /Applications/DataZen.app after install.Feedback: wuxiaolongklws@gmail.com (
mailto:wuxiaolongklws@gmail.com) — stars and issues welcome!via DEV Community: rust (author: flyxl)
I Built "harumi" — A Pure Rust PDF Editing Library with CJK Support
Overview
harumi is a Pure Rust library that lets you dynamically add CJK text (Japanese, Chinese, Korean) to existing PDFs. Unlike bindings-based solutions, it has zero C dependencies and handles font subsetting automatically.
● crates.io: https://crates.io/crates/harumi
● GitHub: https://github.com/kent-tokyo/harumi
Why Another Rust PDF Crate?
The existing Rust PDF ecosystem leaves a gap:
harumi fills that gap: append-only editing of existing PDFs, Pure Rust, with automatic CJK font subsetting and ToUnicode CMap generation built in.
The Three Hard Problems of CJK in PDF
Getting Japanese (and CJK in general) right inside a PDF isn't just about "embedding a font." There are three distinct challenges:
1. Font Subsetting
A full Japanese font file can easily exceed 10 MB. For practical file sizes you must extract only the glyphs actually used and rebuild the font binary — this is subsetting. harumi does this automatically at save time.
2. ToUnicode CMap Generation
PDFs separate rendering (Glyph IDs) from semantics (Unicode code points). Without a ToUnicode CMap, copy-paste and text search produce garbled output. harumi generates this mapping for every font it embeds.
3. Glyph Advance Width Recalculation
After subsetting, Glyph IDs are reassigned. The advance widths stored in the PDF must be recalculated to match — otherwise text spacing breaks. harumi handles this as part of the save pipeline.
Lazy Subsetting Pipeline
harumi uses a lazy subsetting design to handle all three problems in one pass:
1.
2. Collect all text draw calls across all pages
3. Walk every page at
4. Subset the font to only those glyphs
5. Reassign Glyph IDs
6. Build the ToUnicode CMap
7. Recalculate advance widths and write the final CIDFont object
This single-pass approach avoids redundant font processing and keeps the implementation straightforward.
Feature Overview
Current Status & Roadmap
harumi is published on crates.io and the source is available on GitHub.
Planned improvements:
● Broader CJK font format support
● Form field editing
● Performance optimizations for large documents
Feedback, issues, and contributions are very welcome!
via DEV Community: rust (author: kent-tokyo)
Overview
harumi is a Pure Rust library that lets you dynamically add CJK text (Japanese, Chinese, Korean) to existing PDFs. Unlike bindings-based solutions, it has zero C dependencies and handles font subsetting automatically.
● crates.io: https://crates.io/crates/harumi
● GitHub: https://github.com/kent-tokyo/harumi
Why Another Rust PDF Crate?
The existing Rust PDF ecosystem leaves a gap:
harumi fills that gap: append-only editing of existing PDFs, Pure Rust, with automatic CJK font subsetting and ToUnicode CMap generation built in.
The Three Hard Problems of CJK in PDF
Getting Japanese (and CJK in general) right inside a PDF isn't just about "embedding a font." There are three distinct challenges:
1. Font Subsetting
A full Japanese font file can easily exceed 10 MB. For practical file sizes you must extract only the glyphs actually used and rebuild the font binary — this is subsetting. harumi does this automatically at save time.
2. ToUnicode CMap Generation
PDFs separate rendering (Glyph IDs) from semantics (Unicode code points). Without a ToUnicode CMap, copy-paste and text search produce garbled output. harumi generates this mapping for every font it embeds.
3. Glyph Advance Width Recalculation
After subsetting, Glyph IDs are reassigned. The advance widths stored in the PDF must be recalculated to match — otherwise text spacing breaks. harumi handles this as part of the save pipeline.
Lazy Subsetting Pipeline
harumi uses a lazy subsetting design to handle all three problems in one pass:
1.
embed_font() — store raw font bytes; no processing yet2. Collect all text draw calls across all pages
3. Walk every page at
save() time, gathering the complete set of used characters4. Subset the font to only those glyphs
5. Reassign Glyph IDs
6. Build the ToUnicode CMap
7. Recalculate advance widths and write the final CIDFont object
This single-pass approach avoids redundant font processing and keeps the implementation straightforward.
Feature Overview
use harumi::Document;
let mut doc = Document::open("input.pdf")?;
// Append text (including invisible text for search layers)
doc.page(0).add_text("Hello, 世界!", font, 12.0, x, y)?;
// Draw shapes and embed images
doc.page(0).draw_rect(x, y, width, height, color)?;
doc.page(0).embed_image(image_bytes, x, y, width, height)?;
// Page operations
doc.rotate_page(1, 90)?;
doc.delete_page(2)?;
doc.reorder_pages(&[2, 0, 1])?;
// Merge and split
let other = Document::open("other.pdf")?;
doc.merge(other)?;
let parts = doc.split_at(&[3])?;
// Extract text
let text = doc.extract_text(0)?;
// Metadata
doc.set_title("My Document")?;
doc.save("output.pdf")?;
Current Status & Roadmap
harumi is published on crates.io and the source is available on GitHub.
Planned improvements:
● Broader CJK font format support
● Form field editing
● Performance optimizations for large documents
Feedback, issues, and contributions are very welcome!
via DEV Community: rust (author: kent-tokyo)
Auth multi-tenant que prova, não promete: como o GarraIA fecha 110 cenários de RBAC + 81 de RLS antes do beta da Fase 3
via DEV Community: rust (author: Michel)
via DEV Community: rust (author: Michel)
Telegraph
Auth multi-tenant que prova, não promete: como o GarraIA fec…
No GarraIA — framework de agentes IA em Rust, 100% local, MIT — a Fase 3 (Group Workspace) é o módulo onde múltiplos usuários compartilham arquivos, tasks, chats e memória IA dentro de um espaço comum. É o módulo que define se o projeto pode ser usado por…
[Solved] 12 Best Sites to Buy Mix Gmail Accounts in Bulk &
via DEV Community: rust (author: marcellapa)
via DEV Community: rust (author: marcellapa)
Telegraph
[Solved] 12 Best Sites to Buy Mix Gmail Accounts in Bulk &
Introduction✨🚀💬📞⚡🔥🌟 24/7 Premium Instant Support Available✨🚀💬📞⚡🔥🌟 Telegram: https://t.me/Getusasmm✨🚀💬📞⚡🔥🌟 WhatsApp: +1 (579) 550-8030✨🚀💬📞⚡🔥🌟 Email: getusasmm@gmail.com✨🚀💬📞⚡🔥🌟 Discord: Getusasmm https://getusasmm.com/product/buy-mix-gmail-accounts/ https:…
Building a Browser-Based RPG Map Editor with Rust, WebAssembly, WebGL2, and React
via DEV Community: rust (author: TheXper)
via DEV Community: rust (author: TheXper)
Telegraph
Building a Browser-Based RPG Map Editor with Rust, WebAssemb…
I've been building RPGMapEditor.com — a browser-based fantasy map editor for dungeon masters, worldbuilders, and tabletop RPG players. The stack is: Rust + WebAssembly for the editor core, WebGL2 for rendering, React + TypeScript for UI, Rocket for the backend…
Get The Best Assignment Writing Services Today& Top Your Class
https://www.writersupport.co.uk/writing-help/assignment-service/
A majority of students are assigned with plenty of assignment writing task but due to lack of sufficient time and skills, they end up with a failure assignment. Writing a perfect and flawless assignment is not an easy task and only an expert assignment writing service company. If you are also suffering from lower grades due to lack of skills and time then hire Writer Support UK. We know that students have no time to enjoy owing to assignments. Therefore, hire us because we are a premium assignment writing service UK with years of experience in the industry. We offer world-class assignment help from the expert and professional. You can count on us and buy assignment online from our expert writers.
Guaranteed Best Deal On First Order!
Cheap Assignment Writing Service to Score Top Grades
Students look for cheap assignment writing service, but not all assignment writing service UK offers cheap assignment service UK together with quality paper. Writer Support UK offers the best assignment writing service UK. We have hired qualified and experienced assignment writers who can deliver a quality assignment paper at a cheap and reasonable price. When you buy assignment online from us, we ensure to deliver the best assignment service. We believe in writing assignment from scratch rather than copying and pasting it from other sources. We also write fully referenced, cited, non-plagiarised assignment papers.
Benefits of Hiring a Premium Assignment Writing Service UK
Cheap Assignment:
We offer you a cheap assignment writing help UK so that you can easily afford assignment writing service from expert and professional team of writers. No matter how short the deadline or how tricky the topic, we will not charge you unreasonably high price like other assignment writing companies.
Help by Expert:
Only an expert assignment writer can write a quality and flawless assignment paper. For this purpose, we have hired a skilled, proficient and vetted team of writers. A majority of them hold Masters and PhD degree. So, if you have an assignment for master level, you can buy assignment help UK.
On-Time Delivery:
We ensure to make your assignment available before the deadline so that you are never late for the assignment submission. We are able to achieve it with the help of our experts who are good at finalizing the assignment right before the deadline so as to make it ready to be submitted on the time.
via DEV Community: rust (author: Writer Support Uk)
https://www.writersupport.co.uk/writing-help/assignment-service/
A majority of students are assigned with plenty of assignment writing task but due to lack of sufficient time and skills, they end up with a failure assignment. Writing a perfect and flawless assignment is not an easy task and only an expert assignment writing service company. If you are also suffering from lower grades due to lack of skills and time then hire Writer Support UK. We know that students have no time to enjoy owing to assignments. Therefore, hire us because we are a premium assignment writing service UK with years of experience in the industry. We offer world-class assignment help from the expert and professional. You can count on us and buy assignment online from our expert writers.
Guaranteed Best Deal On First Order!
Cheap Assignment Writing Service to Score Top Grades
Students look for cheap assignment writing service, but not all assignment writing service UK offers cheap assignment service UK together with quality paper. Writer Support UK offers the best assignment writing service UK. We have hired qualified and experienced assignment writers who can deliver a quality assignment paper at a cheap and reasonable price. When you buy assignment online from us, we ensure to deliver the best assignment service. We believe in writing assignment from scratch rather than copying and pasting it from other sources. We also write fully referenced, cited, non-plagiarised assignment papers.
Benefits of Hiring a Premium Assignment Writing Service UK
Cheap Assignment:
We offer you a cheap assignment writing help UK so that you can easily afford assignment writing service from expert and professional team of writers. No matter how short the deadline or how tricky the topic, we will not charge you unreasonably high price like other assignment writing companies.
Help by Expert:
Only an expert assignment writer can write a quality and flawless assignment paper. For this purpose, we have hired a skilled, proficient and vetted team of writers. A majority of them hold Masters and PhD degree. So, if you have an assignment for master level, you can buy assignment help UK.
On-Time Delivery:
We ensure to make your assignment available before the deadline so that you are never late for the assignment submission. We are able to achieve it with the help of our experts who are good at finalizing the assignment right before the deadline so as to make it ready to be submitted on the time.
via DEV Community: rust (author: Writer Support Uk)
Why Students Choose Our Homework Help Service
https://www.assignmentservice.co.uk/services/homework/
🎓 Subject-Specific Experts
Your homework is handled by writers who understand your subject deeply.
✍️ Custom-Written Solutions
Every homework task is written from scratch based on your instructions.
⏰ Fast Turnaround Time
We handle urgent homework deadlines without compromising quality.
📚 Accurate & Well-Researched Answers
We ensure your work is supported with proper logic, research, and academic structure.
🔒 100% Confidential Service
Your personal details and orders remain private and secure.
♻️ Free Revisions
We refine your homework until it meets your requirements.
How Our Homework Writing Service Works
Step 1: Submit Your Homework Details
Share your instructions, deadline, subject, and requirements.
Step 2: Get Matched with an Expert
We assign a qualified academic writer in your subject area.
Step 3: Research & Completion
Your homework is carefully researched and completed according to academic standards.
Step 4: Quality Checking
We proofread, check structure, and ensure originality.
Step 5: On-Time Delivery
You receive your completed homework before the deadline.
via DEV Community: rust (author: Assignment Service Uk)
https://www.assignmentservice.co.uk/services/homework/
🎓 Subject-Specific Experts
Your homework is handled by writers who understand your subject deeply.
✍️ Custom-Written Solutions
Every homework task is written from scratch based on your instructions.
⏰ Fast Turnaround Time
We handle urgent homework deadlines without compromising quality.
📚 Accurate & Well-Researched Answers
We ensure your work is supported with proper logic, research, and academic structure.
🔒 100% Confidential Service
Your personal details and orders remain private and secure.
♻️ Free Revisions
We refine your homework until it meets your requirements.
How Our Homework Writing Service Works
Step 1: Submit Your Homework Details
Share your instructions, deadline, subject, and requirements.
Step 2: Get Matched with an Expert
We assign a qualified academic writer in your subject area.
Step 3: Research & Completion
Your homework is carefully researched and completed according to academic standards.
Step 4: Quality Checking
We proofread, check structure, and ensure originality.
Step 5: On-Time Delivery
You receive your completed homework before the deadline.
via DEV Community: rust (author: Assignment Service Uk)
Web Developer Travis McCracken on The Power of Make and Bash
via DEV Community: rust (author: Travis McCracken Web Developer)
via DEV Community: rust (author: Travis McCracken Web Developer)
Telegraph
Web Developer Travis McCracken on The Power of Make and Bash
Unlocking Backend Power with Rust and Go: Insights from Web Developer Travis McCracken Hello, fellow developers and tech enthusiasts! I’m Web Developer Travis McCracken, and today I want to share my thoughts on the exciting world of backend development, especially…
Localizing a Tauri App for Japanese and English — What Actually Works
All tests run on an 8-year-old MacBook Air.
All results from shipping 7 Mac apps as a solo developer. No sponsored opinion.
All my apps ship in Japanese and English. Not separate codebases — one app, two languages, runtime switching.
Here's the implementation that works in production.
Why bother with dual language
Japanese users convert better on Japanese UI with JPY pricing. English users are a global market. Both are worth serving. One codebase is the only viable approach for a solo developer.
The i18n library
I use react-i18next in the React frontend:
bashnpm install i18next react-i18next
typescript// i18n.ts
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
i18n.use(initReactI18next).init({
resources: {
en: { translation: enTranslations },
ja: { translation: jaTranslations },
},
lng: 'en',
fallbackLng: 'en',
})
export default i18n
Translation file structure
typescript// en.json
{
"sync": {
"start": "Start Sync",
"stop": "Stop Sync",
"status": {
"idle": "Ready",
"running": "Syncing...",
"complete": "Sync complete",
"error": "Sync failed"
}
},
"device": {
"connect": "Connect Device",
"disconnect": "Disconnect",
"notFound": "No device found"
}
}
// ja.json
{
"sync": {
"start": "同期開始",
"stop": "同期停止",
"status": {
"idle": "待機中",
"running": "同期中...",
"complete": "同期完了",
"error": "同期エラー"
}
},
"device": {
"connect": "デバイスを接続",
"disconnect": "切断",
"notFound": "デバイスが見つかりません"
}
}
Detecting system language
Get the system locale from Rust and pass to the frontend on launch:
rust#[tauri::command]
fn get_system_locale() -> String {
std::env::var("LANG")
.unwrap_or_default()
.split('.')
.next()
.unwrap_or("en")
.to_string()
}
typescriptconst locale = await invoke('get_system_locale')
const lang = locale.startsWith('ja') ? 'ja' : 'en'
i18n.changeLanguage(lang)
Localizing Gemini prompts
AI prompts need localization too. Japanese users get Japanese responses:
rustpub fn build_prompt(input: &str, lang: &str) -> String {
match lang {
"ja" => format!(
"以下のエラーを日本語で説明し、修正方法を提案してください。\nエラー: {}",
input
),
_ => format!(
"Explain this error and suggest a fix.\nError: {}",
input
),
}
}
A Japanese user who gets an English AI response will be confused. Localize the prompts.
The separate Gumroad listings
One app binary, two Gumroad listings — JP and EN with different prices and descriptions. The JP listing uses JPY pricing. The EN listing uses USD.
Users self-select. The binary is identical. The storefront is localized.
The verdict
react-i18next + system locale detection + localized AI prompts covers the full localization stack. The overhead is low. The market expansion is real.
If this was useful, a ❤️ helps more than you'd think — thanks!
Hiyoko PDF Vault → https://hiyokoko.gumroad.com/l/HiyokoPDFVault
X → @hiyoyok
via DEV Community: rust (author: hiyoyo)
All tests run on an 8-year-old MacBook Air.
All results from shipping 7 Mac apps as a solo developer. No sponsored opinion.
All my apps ship in Japanese and English. Not separate codebases — one app, two languages, runtime switching.
Here's the implementation that works in production.
Why bother with dual language
Japanese users convert better on Japanese UI with JPY pricing. English users are a global market. Both are worth serving. One codebase is the only viable approach for a solo developer.
The i18n library
I use react-i18next in the React frontend:
bashnpm install i18next react-i18next
typescript// i18n.ts
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
i18n.use(initReactI18next).init({
resources: {
en: { translation: enTranslations },
ja: { translation: jaTranslations },
},
lng: 'en',
fallbackLng: 'en',
})
export default i18n
Translation file structure
typescript// en.json
{
"sync": {
"start": "Start Sync",
"stop": "Stop Sync",
"status": {
"idle": "Ready",
"running": "Syncing...",
"complete": "Sync complete",
"error": "Sync failed"
}
},
"device": {
"connect": "Connect Device",
"disconnect": "Disconnect",
"notFound": "No device found"
}
}
// ja.json
{
"sync": {
"start": "同期開始",
"stop": "同期停止",
"status": {
"idle": "待機中",
"running": "同期中...",
"complete": "同期完了",
"error": "同期エラー"
}
},
"device": {
"connect": "デバイスを接続",
"disconnect": "切断",
"notFound": "デバイスが見つかりません"
}
}
Detecting system language
Get the system locale from Rust and pass to the frontend on launch:
rust#[tauri::command]
fn get_system_locale() -> String {
std::env::var("LANG")
.unwrap_or_default()
.split('.')
.next()
.unwrap_or("en")
.to_string()
}
typescriptconst locale = await invoke('get_system_locale')
const lang = locale.startsWith('ja') ? 'ja' : 'en'
i18n.changeLanguage(lang)
Localizing Gemini prompts
AI prompts need localization too. Japanese users get Japanese responses:
rustpub fn build_prompt(input: &str, lang: &str) -> String {
match lang {
"ja" => format!(
"以下のエラーを日本語で説明し、修正方法を提案してください。\nエラー: {}",
input
),
_ => format!(
"Explain this error and suggest a fix.\nError: {}",
input
),
}
}
A Japanese user who gets an English AI response will be confused. Localize the prompts.
The separate Gumroad listings
One app binary, two Gumroad listings — JP and EN with different prices and descriptions. The JP listing uses JPY pricing. The EN listing uses USD.
Users self-select. The binary is identical. The storefront is localized.
The verdict
react-i18next + system locale detection + localized AI prompts covers the full localization stack. The overhead is low. The market expansion is real.
If this was useful, a ❤️ helps more than you'd think — thanks!
Hiyoko PDF Vault → https://hiyokoko.gumroad.com/l/HiyokoPDFVault
X → @hiyoyok
via DEV Community: rust (author: hiyoyo)
I don't want to be a programmer, I want to remind developers that they are failing us and they must take action
use Claude for project planning (it's expensive), use DeepSeek or a cheap Chinese model for coding, use Gemini for review. Errors here, errors there, GitBrain add-ons or VS Code add-ons depending on what you use. A problem in the code? Go to the browser to fix it. Then I need to pay for some subscription from my phone.
This is the curse of wasted time and scattered focus.
I'm not a Rust programmer, but it's the fastest language.
So I built an interface that integrates chat with 30+ AI providers simultaneously, payments, seven memory layers, and a simple but effective embedded IDE — Monica IDE — plus Microsoft Phi Nano.
A browser with advanced privacy tech. Orchestration between models and payments. A unique user experience for each person.
That's my idea. I don't know how to complete it, polish it, or test it on Windows or Mac — I only work on Linux. These are my financial limits. I need your help and advice.
github
via DEV Community: rust (author: aly ghaly)
use Claude for project planning (it's expensive), use DeepSeek or a cheap Chinese model for coding, use Gemini for review. Errors here, errors there, GitBrain add-ons or VS Code add-ons depending on what you use. A problem in the code? Go to the browser to fix it. Then I need to pay for some subscription from my phone.
This is the curse of wasted time and scattered focus.
I'm not a Rust programmer, but it's the fastest language.
So I built an interface that integrates chat with 30+ AI providers simultaneously, payments, seven memory layers, and a simple but effective embedded IDE — Monica IDE — plus Microsoft Phi Nano.
A browser with advanced privacy tech. Orchestration between models and payments. A unique user experience for each person.
That's my idea. I don't know how to complete it, polish it, or test it on Windows or Mac — I only work on Linux. These are my financial limits. I need your help and advice.
github
via DEV Community: rust (author: aly ghaly)
I built a local-first hybrid vector database in Rust from scratch
A few months ago I started building vecdb — a vector database that
runs entirely on your own machine. No cloud, no API keys, no subscription.
The problem
Most vector databases make you choose — semantic search OR keyword search.
Semantic search finds meaning but misses exact keywords. Keyword search
finds exact matches but misses meaning.
vecdb combines both in a two-stage pipeline:
1. HNSW dense index retrieves candidates by meaning
2. BM25 sparse index re-scores by keyword relevance
3. A fusion function combines both scores
What it can do
● Hybrid HNSW + BM25 retrieval
● SQL-like query language with VECTOR_SIM predicate
● Python and TypeScript SDKs
● Single binary, Docker support
● 187 tests
● MIT license
Example query
SELECT * FROM documents
WHERE VECTOR_SIM(vec, [0.1, 0.2, 0.3]) > 0.75
AND payload->>'region' = 'US'
LIMIT 10;
Try it
GitHub: https://github.com/zaydmulani09/vecdb
Would love feedback from the community — especially on the
architecture and what to tackle in v0.2.0.
via DEV Community: rust (author: Zayd Mulani)
A few months ago I started building vecdb — a vector database that
runs entirely on your own machine. No cloud, no API keys, no subscription.
The problem
Most vector databases make you choose — semantic search OR keyword search.
Semantic search finds meaning but misses exact keywords. Keyword search
finds exact matches but misses meaning.
vecdb combines both in a two-stage pipeline:
1. HNSW dense index retrieves candidates by meaning
2. BM25 sparse index re-scores by keyword relevance
3. A fusion function combines both scores
What it can do
● Hybrid HNSW + BM25 retrieval
● SQL-like query language with VECTOR_SIM predicate
● Python and TypeScript SDKs
● Single binary, Docker support
● 187 tests
● MIT license
Example query
SELECT * FROM documents
WHERE VECTOR_SIM(vec, [0.1, 0.2, 0.3]) > 0.75
AND payload->>'region' = 'US'
LIMIT 10;
Try it
GitHub: https://github.com/zaydmulani09/vecdb
Would love feedback from the community — especially on the
architecture and what to tackle in v0.2.0.
via DEV Community: rust (author: Zayd Mulani)
ให้ AI พูดภาษาไทยได้ด้วย Garudust Agent + iApp TTS
ถ้าคุณใช้ Garudust Agent อยู่แล้ว การเพิ่มความสามารถให้ AI พูดภาษาไทยออกมาเป็นเสียง ทำได้ในไม่กี่ขั้นตอน — ไม่ต้องแก้โค้ดใด ๆ เพราะ Garudust มีระบบ script tool ที่ pluggable อยู่แล้ว
TTS คืออะไร และทำไมต้อง iApp
TTS (Text-to-Speech) คือการแปลงข้อความเป็นเสียงพูด เหมาะกับ use case เช่น
● ตอบกลับผู้ใช้ด้วยเสียงแทนข้อความบน LINE / Telegram
● สร้างไฟล์เสียงสำหรับ podcast / narration อัตโนมัติ
● Accessibility — ผู้ใช้ที่อ่านหน้าจอยาก
iApp Technology เป็นบริษัทไทยที่มี TTS API รองรับภาษาไทยโดยเฉพาะ เสียงฟังเป็นธรรมชาติ รองรับสูงสุด 10,000 ตัวอักษรต่อ request คิดค่าใช้จ่าย 1 IC ต่อ 400 ตัวอักษร สมัครได้ที่ iapp.co.th
ขั้นตอนที่ 1 — ติดตั้ง tts tool จาก Hub
Garudust มี Hub รวม script tool ให้ install ได้ทันที
ระบบจะดึง
ขั้นตอนที่ 2 — เพิ่ม Provider Profile ใน config.yaml
Garudust ใช้ระบบ provider profile จัดการ API endpoint และ key — ไม่ต้อง hardcode ใน script
เปิด
ขั้นตอนที่ 3 — เพิ่ม API Key ใน .env
รับ key ได้จาก iapp.co.th/dashboard
ทดสอบผ่าน CLI
ผลลัพธ์:
เปิดฟัง:
เบื้องหลัง — run.py ทำงานยังไง
iApp TTS API คืน raw PCM มาโดยไม่มี WAV header ดังนั้น
ผลที่ได้คือ RIFF WAV 16-bit mono 24kHz — เปิดได้กับทุก audio player
เปลี่ยน Provider ได้ทันทีโดยไม่แตะโค้ด
นี่คือจุดแข็งของ Garudust provider profile — ถ้าอยากลอง provider อื่นเช่น AIS หรือ local model แค่เพิ่ม profile และเปลี่ยน
ขั้นต่อไปที่ทำได้
● LINE voice message — เพิ่ม
● Auto TTS reply — สั่งให้ agent เรียก
● Speaker selection — iApp มีหลายเสียง ตั้ง
สรุป
Garudust Agent เป็น open source ที่ github.com/garudust-org/garudust-agent — ติดตามหรือ contribute ได้เลย 🦅
via DEV Community: rust (author: Garudust)
ถ้าคุณใช้ Garudust Agent อยู่แล้ว การเพิ่มความสามารถให้ AI พูดภาษาไทยออกมาเป็นเสียง ทำได้ในไม่กี่ขั้นตอน — ไม่ต้องแก้โค้ดใด ๆ เพราะ Garudust มีระบบ script tool ที่ pluggable อยู่แล้ว
TTS คืออะไร และทำไมต้อง iApp
TTS (Text-to-Speech) คือการแปลงข้อความเป็นเสียงพูด เหมาะกับ use case เช่น
● ตอบกลับผู้ใช้ด้วยเสียงแทนข้อความบน LINE / Telegram
● สร้างไฟล์เสียงสำหรับ podcast / narration อัตโนมัติ
● Accessibility — ผู้ใช้ที่อ่านหน้าจอยาก
iApp Technology เป็นบริษัทไทยที่มี TTS API รองรับภาษาไทยโดยเฉพาะ เสียงฟังเป็นธรรมชาติ รองรับสูงสุด 10,000 ตัวอักษรต่อ request คิดค่าใช้จ่าย 1 IC ต่อ 400 ตัวอักษร สมัครได้ที่ iapp.co.th
ขั้นตอนที่ 1 — ติดตั้ง tts tool จาก Hub
Garudust มี Hub รวม script tool ให้ install ได้ทันที
garudust tool install tts
ระบบจะดึง
tool.yaml และ run.py มาไว้ที่ ~/.garudust/tools/tts/ และ register ใน registry อัตโนมัติขั้นตอนที่ 2 — เพิ่ม Provider Profile ใน config.yaml
Garudust ใช้ระบบ provider profile จัดการ API endpoint และ key — ไม่ต้อง hardcode ใน script
เปิด
~/.garudust/config.yaml แล้วเพิ่ม:providers:
# ... providers ที่มีอยู่แล้ว ...
tts-iapp:
url: https://api.iapp.co.th/v3/store/audio/tts
key: ${IAPP_API_KEY}
tools:
tts:
model: tts-iapp # ชี้ไปที่ profile ข้างบน
Garudust จะ injectGARUDUST_BASE_URLและGARUDUST_API_KEYเข้า script อัตโนมัติตอน runtime
ขั้นตอนที่ 3 — เพิ่ม API Key ใน .env
# ~/.garudust/.env
IAPP_API_KEY=iapp_live_xxxxxxxxxxxxxxxx
รับ key ได้จาก iapp.co.th/dashboard
ทดสอบผ่าน CLI
garudust "ใช้ tts tool แปลงข้อความว่า สวัสดีครับ ผมคือ Garudust ผู้ช่วย AI ของคุณ แล้วบอก path ไฟล์ที่ได้"
ผลลัพธ์:
สร้างไฟล์เสียงสำเร็จ
เสียงอยู่ที่: /tmp/tts_88b5bba372dd41a7acc7e37ea75df89b.wav
เปิดฟัง:
open /tmp/tts_88b5bba372dd41a7acc7e37ea75df89b.wav
เบื้องหลัง — run.py ทำงานยังไง
iApp TTS API คืน raw PCM มาโดยไม่มี WAV header ดังนั้น
run.py จัดการ wrap header ให้เอง:def pcm_to_wav(pcm: bytes, sample_rate: int = 24000, channels: int = 1, bits: int = 16) -> bytes:
byte_rate = sample_rate * channels * bits // 8
block_align = channels * bits // 8
data_size = len(pcm)
header = struct.pack(
"<4sI4s4sIHHIIHH4sI",
b"RIFF", 36 + data_size, b"WAVE",
b"fmt ", 16,
1, channels, sample_rate, byte_rate, block_align, bits,
b"data", data_size,
)
return header + pcm
ผลที่ได้คือ RIFF WAV 16-bit mono 24kHz — เปิดได้กับทุก audio player
เปลี่ยน Provider ได้ทันทีโดยไม่แตะโค้ด
นี่คือจุดแข็งของ Garudust provider profile — ถ้าอยากลอง provider อื่นเช่น AIS หรือ local model แค่เพิ่ม profile และเปลี่ยน
tools.tts.model บรรทัดเดียว:providers:
tts-ais:
url: https://your-ais-tts-endpoint/api/tts
key: ${AIS_TTS_API_KEY}
tools:
tts:
model: tts-ais # เปลี่ยนแค่นี้
run.py ไม่ต้องแตะเลย เพราะอ่าน GARUDUST_BASE_URL และ GARUDUST_API_KEY จาก profile เสมอขั้นต่อไปที่ทำได้
● LINE voice message — เพิ่ม
OutboundMessage::Audio ใน Garudust core แล้วส่งไฟล์ WAV เป็น voice message บน LINE ได้เลย● Auto TTS reply — สั่งให้ agent เรียก
tts ทุกครั้งที่ตอบ โดย inject ใน system prompt● Speaker selection — iApp มีหลายเสียง ตั้ง
TTS_SPEAKER_ID ใน .env เพื่อเลือกเสียงที่ชอบสรุป
Garudust Agent เป็น open source ที่ github.com/garudust-org/garudust-agent — ติดตามหรือ contribute ได้เลย 🦅
via DEV Community: rust (author: Garudust)
Rust for Web3 Hackers: Welcome to the Cyber-Mecha Repair Dock 🤖🔧
via DEV Community: rust (author: Sudip)
via DEV Community: rust (author: Sudip)
Telegraph
Rust for Web3 Hackers: Welcome to the Cyber-Mecha Repair Doc…
If you’re stepping into Web3 security, Solana development, or exploit research, there’s one language you’ll keep hearing everywhere: Rust 🦀 Rust has become the backbone of modern blockchain infrastructure. Most Solana smart contracts (Programs) are written…
Advanced Rust Concepts: Iterators, Closures, Generics & More (Part 2)
via DEV Community: rust (author: mihir mohapatra)
via DEV Community: rust (author: mihir mohapatra)
Telegraph
Advanced Rust Concepts: Iterators, Closures, Generics & More…
This is Part 2 of the Core Rust Concepts series. If you haven't read Part 1, start there — it covers Ownership, Borrowing, Lifetimes, Traits, Result/Option, and Pattern Matching. Table of Contents Closures Iterators & Iterator Adaptors Generics Enums & the…