SlopScore
10 crowdincl. 1 critic

gns3fy-rs

Vibe coded port of python's gns3fy
Open repo on GitHubgithub.com/Julien-cpsn/gns3fy-rs
Rust · ★ 1 · 0 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 43 minutes ago by Julien-cpsn · last checked 43 minutes ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-03: Vibe coded port of python's gns3fy; its own README says "Vibe coded port of python's gns3fy". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as Julien-cpsn. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Vibe coded port of python's gns3fy
created
2026-10-02 · pushed 5 hours ago · 1 commits · 1 contributor
languages
Rust 100%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 43 minutes ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
rust
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: Vibe coded port of python's gns3fy; its own README says "Vibe coded port of python's gns3fy". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

gns3fy (Rust)

Rust wrapper around the GNS3 server REST API (GNS3 2.2+), a port of the Python gns3fy library. Use it to drive a GNS3 server from scripts, tooling and network CI/CD pipelines.

[dependencies]
gns3fy = { path = "." }
use std::sync::Arc;
use gns3fy::{Gns3Connector, Lookup, Project};

fn main() -> gns3fy::Result<()> {
    let server = Arc::new(Gns3Connector::new("http://localhost:3080")?);

    let mut lab = Project::with_connector(server.clone()).with_name("API_TEST");
    lab.get()?;   // project + stats + snapshots + drawings + nodes + links
    lab.open()?;

    for node in lab.nodes_summary()? { println!("{node}"); }
    for link in lab.links_summary()? { println!("{link}"); }

    if let Some(node) = lab.get_node_mut(Lookup::Name("alpine-1"))? {
        node.stop()?;
        node.start()?;
    }
    lab.create_link("alpine-1", "eth1", "IOU1", "Ethernet0/1")?;
    Ok(())
}

Run the bundled walkthrough with cargo run --example lab -- http://localhost:3080 API_TEST.

Python → Rust mapping

Python Rust
Gns3Connector(url, user, cred, verify, api_version) Gns3Connector::new(url) / Gns3Connector::builder(url).user(..).cred(..).verify(..).api_version(..).build()
Project, Node, Link (pydantic dataclasses) Project, Node, Link structs, Default + with_* builders; share the connector with Arc
name= / project_id= / template_id= keyword pairs Lookup::Name(..) / Lookup::Id(..)
update(**kwargs), create_template(**kwargs) take a serde_json::Value object: node.update(json!({"x": 10}))?
*_summary(is_print=...) return Vec of typed rows; rows implement Display (same text the Python version printed)
validators on node_type, console_type, status, link_type enums NodeType, ConsoleType, NodeStatus, ProjectStatus, LinkType; invalid values fail at deserialization
ValueError / HTTPError gns3fy::Error (InvalidInput, NotFound, Api{status,message}, MissingConnector, Http, Json, Io)
drawing_utils.generate_*_svg(...) generate_*_svg(&Options { .. , ..Default::default() })

Intentional differences from the Python library

  • No printing. create_node, create_link, create_snapshot, create_drawing, delete_* and the *_summary methods return data instead of printing. create_* return the created object.
  • verify is honored. Python accepted verify but always sent verify=False. Here the default is still "do not verify", but .verify(true) really enables certificate checking.
  • Port-in-use / link matching is orientation-independent. Python only compared nodes[0] with node A and nodes[1] with node B, so a link stored the other way round was missed. create_link now rejects any link that uses either port; delete_link finds the link in either orientation.
  • Missing objects are NotFound errors where Python crashed with IndexError/TypeError/AttributeError (unknown node name, unknown project name, unknown template...).
  • No request timeout by default (as in Python); set one with .timeout(..) on the builder.
  • Connector-level calls (get_projects, get_templates, get_computes, ...) return raw serde_json::Value like the Python dicts; Project/Node/Link give you typed access.
  • nodes_inventory returns a name-sorted BTreeMap (Python used insertion order).

Tests

cargo test runs unit tests, doc-tests and integration tests against an in-process mock GNS3 server (tests/common) using the original Python fixtures (tests/data). No GNS3 server is needed.

Read the rest on GitHub

Scan report · 2026-10-03
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review — +10 single commit

From the balcony · 1 of 2 clapped

  1. Crusoeclapped
    No vulnerable dependencies, clear REST API wrapper purpose with local GNS3 server connectivity, no credential harvesting or telemetry concerns detected.

Cap'm Slop read it and passed. Their reasons are on the balcony, with every other verdict.

Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

0 comments

log in to comment.

report this listing — log in to report