Termix-SSH / Termix-SSH/Support
[FEATURE] Sync Network Graph between Desktop and Remote Server
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 28
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
Title
Sync Network Graph between Desktop and Remote Server
Platform
Desktop App - Windows
Is it related to an issue?
Network Graph is available both in the Web interface and in the standalone Desktop client, but its topology is currently not included in Remote Sync.
This means a graph created or modified on the remote Termix server does not appear in the Desktop client, and a graph created locally in Desktop is not synchronized back to the server.
This is especially noticeable because the hosts used by Network Graph are already synchronized between the two environments.
The Solution
Add Network Graph / networkTopology to Desktop Remote Sync so that the same user's network topology is available on both the remote server and the local Desktop backend.
The topology is already user-scoped in the database through network_topology.user_id, so it seems suitable for per-user synchronization.
The current Desktop Remote Sync entity list contains:
[
"sshCredentials",
"vaultProfiles",
"sshFolders",
"snippetFolders",
"hosts",
"snippets",
"dashboardServiceLinks",
"homepageItems",
"userPreferences",
]
but Network Graph / networkTopology is not included.
Ideally, changes made to the graph on either side should synchronize bidirectionally in the same way as other user-owned data.
Additional Context
I checked the current source code before opening this request.
Network Graph data is stored in the network_topology table and is explicitly owned by a user:
export const networkTopology = sqliteTable("network_topology", {
id: integer("id").primaryKey({ autoIncrement: true }),
userId: text("user_id")
.notNull()
.references(() => users.id, { onDelete: "cascade" }),
topology: text("topology"),
createdAt: text("created_at")
.notNull()
.default(sql`CURRENT_TIMESTAMP`),
updatedAt: text("updated_at")
.notNull()
.default(sql`CURRENT_TIMESTAMP`),
});
So this does not appear to be instance-global data; it is already scoped to the individual user.
One implementation detail is that networkTopology currently does not have a syncId, unlike entities already handled by Remote Sync.
For example, synchronized entities such as snippets and SSH folders have a stable syncId in addition to updatedAt.
Therefore Network Graph may need either:
- a
syncIdand normal Remote Sync entity support, or - dedicated synchronization logic for the user's topology.
Since the graph is based on hosts and hosts are already synchronized using stable sync IDs, host references in the topology may also need to be resolved using host syncId values rather than database-local numeric IDs.
The goal is simply that one user's Network Graph remains the same between the Web/server instance and their standalone Desktop client.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Desktop Remote Sync entity list and the network_topology schema described in the issue. Compare how snippets and SSH folders handle syncId, updatedAt, user ownership, and host references, then determine the appropriate synchronization path. Done means a user's topology changes appear bidirectionally in the Desktop client and remote server without breaking host relationships.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- sqlite, typescript
- Domain
- backend, databases, desktop, distributed-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100