Syncyphus - an Obsidian vault to HelixDB sync tool that parses Markdown notes, extracts wikilinks/tags, generates Gemini embeddings, and syncs to HelixDB.
- Graph + Vector in one DB - Nice having Note nodes and LinksTo edges alongside embeddings in same system
- Query compilation - HQL queries compile at deploy time, catching errors early
- Dev workflow -
helix push devhandles container/image rebuild cleanly - Python SDK quality - Better documented than Go SDK
-
Go SDK missing Content-Type header
- The SDK sends requests without
Content-Type: application/json, causing 415 errors with fresh HelixDB instances - Workaround: Use curl with explicit
-H "Content-Type: application/json" - Fix: Add header in SDK or document the requirement
- The SDK sends requests without
-
Array vs object response ambiguity
- Queries like
getNoteByPathreturn{"note": [...]}- an array wrapped in object - Hard to know schema from debugging - need clearer docs or consistent wrapper format
- Example:
getAllNotesreturns{"notes": [...]}butgetNoteByPathreturns{"note": [...]}
- Queries like
-
Upsert semantics unclear
UpsertNrequires existing node to update; throws "No value found" when not present- Documentation doesn't explain how to handle "create or update" pattern
- Workaround: Use
AddN(creates new) + separate update query
-
Port conflicts on restart
helix push devsometimes binds to 6970 instead of 6969 when port is in use- No way to force specific port - adds friction in dev workflow
-
Default embedding generation
- Notes created without explicit embedding field fail
- No default value or optional field support in HQL schema types
- Workaround: Only add embedding when embedder is available, accept null in code
-
.obsidian folder included by default
- Obsidian internal files synced as notes - should filter
- No built-in ignore patterns
- SDK consistency - Ensure Go/Python/JS SDKs handle Content-Type header identically
- Response schema docs - Document whether queries return arrays or objects
- Upsert documentation - Better explain create-or-update pattern with code examples
- Dev experience - Add
--force-portflag or clearer port allocation feedback - Optional fields - Support nullable/optional fields in schema so embeddings can be omitted
For a knowledge graph use case, yes - having graph + vector in one place is valuable. Need the SDK friction resolved first for production use.