ΤΕΥΧΟΣ 018  ·  22 ΟΚΤΩΒΡΙΟΥ 2026 RSS
CodeCity
ΑΣΦΑΛΕΙΑ № 0018

Wassette: το sandbox που δεν πιστεύει ούτε την περιγραφή του εργαλείου

Το Wassette της Microsoft τρέχει τα εργαλεία ενός πράκτορα MCP ως συστατικά WebAssembly μέσα στο sandbox του Wasmtime: τίποτα δεν αγγίζει δίκτυο, αρχεία ή κλειδιά αν δεν του δώσεις ρητά άδεια. Η δοκιμή μας σε Windows 11 έδειξε την ίδια κλήση να μπλοκάρει σε 0,074 δευτερόλεπτα χωρίς άδεια και να περνά σε 0,30 με άδεια για έναν μόνο host.

Wassette — σχέδιο: το συστατικό WebAssembly κλεισμένο σε κουτί, με τα δικτυακά ανοίγματα σφραγισμένα

Τι κάνει

Ένας πράκτορας δεν μπορεί να κάνει τίποτα που δεν του έχεις δώσει ως εργαλείο. Όταν του ζητάς να διαβάσει μια σελίδα, να ρωτήσει ένα API ή να δει ένα αρχείο, δεν το κάνει μόνος του· ζητά από ένα μικρό βοηθητικό πρόγραμμα να το κάνει για λογαριασμό του. Αυτό το βοηθητικό πρόγραμμα το λέμε MCP server — «διακομιστή του Πρωτοκόλλου Πλαισίου Μοντέλου». Δέκα γραμμές πιο κάτω θα δεις γιατί το όνομά του δεν έχει σημασία· αυτό που έχει σημασία είναι πώς τρέχει.

Και τρέχει άσχημα. Ο συνηθισμένος MCP server είναι ένα κανονικό πρόγραμμα: μπορεί να ανοίξει σύνδεση στο δίκτυο, να διαβάσει όποιο αρχείο θέλει, να δει τις μεταβλητές περιβάλλοντος όπου φυλάς τα κλειδιά σου. Ο μόνος έλεγχος που έχεις πριν τον τρέξεις είναι ένα κείμενο — η περιγραφή του, γραμμένη από όποιον τον έφτιαξε. Αν κάποιος γράψει «αθώο εργαλείο καιρού» και μέσα κάνει κάτι άλλο, εσύ το είδες όταν το εγκατέστησες και μετά το ξέχασες. Η περιγραφή δεν είναι φύλακας. Είναι διαφήμιση.

Το Wassette απαντά αλλάζοντας το ίδιο το υλικό του εργαλείου, όχι το πόσο καλή είναι η περιγραφή του. Δεν δέχεται τα εργαλεία ως κοινά προγράμματα (JavaScript, Python, ό,τι άλλο) που τα τρέχει με τα δικά σου δικαιώματα. Τα θέλει μεταγλωττισμένα σε WebAssembly και τα τρέχει μέσα στο sandbox του Wasmtime.

Τι είναι το WebAssembly, με λόγια απλά: μια μορφή κώδικα που δεν είναι γραμμένη για τον επεξεργαστή σου, αλλά για έναν «εικονικό» υπολογιστή που τον προσποιείται το πρόγραμμα που το φιλοξενεί. Γεννήθηκε μέσα στους browsers, όπου έπρεπε να τρέχει γρήγορα χωρίς να μπορεί να πειράξει το μηχάνημα. Σήμερα τρέχει και έξω από τον browser. Ένα συστατικό (component) WebAssembly είναι ένα τέτοιο κομμάτι κώδικα, αυτοτελές, που δεν έχει δικό του τρόπο να μιλήσει στο λειτουργικό σύστημα.

Και εδώ είναι το κρίσιμο σημείο. Ένα κανονικό πρόγραμμα μπορεί θεωρητικά να κάνει τα πάντα και οι κόποι σου πάνε στο να του κόψεις δικαιώματα. Ένα συστατικό WebAssembly δεν μπορεί τίποτα από μόνο του: ούτε αρχείο να ανοίξει, ούτε σύνδεση να σηκώσει, ούτε μια μεταβλητή περιβάλλοντος να διαβάσει. Κάθε τέτοια πράξη περνά υποχρεωτικά από το πρόγραμμα-οικοδεσπότη, που του τη δίνει ή δεν του τη δίνει. Αυτό το ονομάζουμε sandbox: ένα κουτί όπου ο ένοικος δεν έχει κλειδιά, δεν έχει τηλέφωνο, δεν έχει παράθυρο. Ό,τι του φέρνεις, του το φέρνεις εσύ από την πόρτα.

Και το άρνηση-by-default, που λέει ο τίτλος; Σημαίνει ότι η απουσία άδειας είναι ήδη απαγόρευση. Δεν ξεκινάς από «όλα επιτρέπονται και κόβω ό,τι με ενοχλεί». Ξεκινάς από «δεν επιτρέπεται τίποτα», και καθεμιά δυνατότητα μπαίνει με το χέρι, για συγκεκριμένο προορισμό. Το δικό μας πείραμα ακριβώς αυτό μέτρησε: άδεια για το example.com σήμαινε ότι το www.iana.org έμεινε κλειστό. Δεν είναι «ανάθεμα στους κακούς servers». Είναι «αυτό δεν μπορεί να κάνει τίποτα που δεν του επέτρεψα, ό,τι κι αν γράφει η περιγραφή του».

Πάνω σε αυτό το υλικό, το Wassette είναι ταυτόχρονα δύο πράγματα. Πρώτο, ένας runtime: φορτώνει συστατικά, τα κρατά σε έναν κατάλογο, τους δίνει άδειες, τα εκτελεί. Δεύτερο, ο ίδιος ένας MCP server: μιλά στο πρωτόκολλο και εκθέτει τα συστατικά ως εργαλεία στον πράκτορα. Στη δική μας δοκιμή απάντησε ως serverInfo rmcp 3.5.1 με 15 εργαλεία.

Το έργο είναι της Microsoft και αυτό μετράει, γιατί η ασφάλεια ενός runtime είναι τόσο καλή όσο η ομάδα πίσω της. Το αποθετήριο (https://github.com/microsoft/wassette) έχει σήμερα 969 αστέρια, 76 forks και 58 ανοιχτά issues, με άδεια MIT — δηλαδή μπορείς να το χρησιμοποιήσεις ακόμα και εμπορικά, χωρίς να ζητήσεις άδεια από κανέναν. Είναι ανοιγμένο από τις 15 Ιουλίου 2025 και δέχτηκε τελευταία αλλαγή στις 20 Οκτωβρίου 2026, 19:28 UTC — δηλαδή χθες, την ώρα που γράφεται αυτό το κείμενο. Στα 22 άτομα που έχουν συνεισφέρει κώδικα βλέπεις ονόματα ανθρώπων (asw101, Mossaka, yoshuawuyts, thomastaylor312) και όχι μόνο bots που ανεβάζουν εκδόσεις. Έχουν βγει 18 εκδόσεις· η τελευταία, v0.8.1, ανέβηκε στις 19 Οκτωβρίου 2026, 04:45 UTC. Δεν υπάρχει στο crates.io, το winget το έχει στην 0.4.0 — θα δούμε παρακάτω γιατί αυτό είναι παγίδα. Και το κυριότερο: είναι μηδέν ευρώ, μηδέν κλειδιά, μηδέν λογαριασμός.

Για ποιον είναι

Αν δίνεις σήμερα σε έναν πράκτορα τη δυνατότητα να καλεί εξωτερικά εργαλεία, του έχεις δώσει το σύνολο των δικών σου δικαιωμάτων. Το Wassette είναι για σένα, αν αυτή η φράση σε κάνει να νιώθεις άβολα.

Είναι για τον άνθρωπο που δοκιμάζει MCP servers από το GitHub σαν να κατεβάζει εφαρμογές. Κάθε server που προσθέτει είναι ένα άγνωστο πρόγραμμα με πρόσβαση στο δίκτυο και στο δίσκο του. Το Wassette του επιτρέπει να λέει «αυτό θα δει μόνο το example.com, τίποτα άλλο» και να το εννοεί, χωρίς να διαβάσει πρώτα πηγαίο κώδικα σε μια γλώσσα που δεν ξέρει.

Είναι για όποιον ζητά από τον πράκτορα να τραβάει δεδομένα από έξω — καιρός, τιμές, τεκμηρίωση — και δεν θέλει να του δώσει για αυτό το προνόμιο το δίκτυο ολόκληρο. Είναι για όποιον φοβάται τα κλειδιά: το Wassette δεν ζητά κλειδιά για να δουλέψει, και δεν βλέπει καμία μεταβλητή περιβάλλοντος αν δεν του την ανοίξεις ονομαστικά.

Είναι επίσης για όποιον φτιάχνει εργαλεία, όχι μόνο για όποιον τα καταναλώνει. Ένα συστατικό WebAssembly δεν είναι MCP-ειδικό πράγμα: μπορείς να το τρέξεις αλλού, να το μοιραστείς, να το βάλεις σε δικό σου κατάλογο. Το έργο το διαφημίζει ως επαναχρησιμοποίηση, και αυτό είναι ισχυρισμός του κατασκευαστή — το ότι ένα συστατικό είναι τεχνικά φορητό δεν σημαίνει αυτόματα ότι το οικοσύστημα γύρω του είναι ώριμο.

Για ποιον δεν είναι. Δεν είναι για παραγωγή: το ίδιο το README λέει, χωρίς περιστροφές, ότι το αποθετήριο δεν είναι έτοιμο για παραγωγή και βρίσκεται σε πρώιμη ανάπτυξη. Δεν είναι για όποιον θέλει εγκατάσταση με ένα κλικ: το καλύτερο εργαλείο εγκατάστασης για Windows είναι σήμερα τέσσερις εκδόσεις πίσω. Δεν είναι για όποιον νομίζει ότι το sandbox θα τον σώσει από υπερβολική κατανάλωση: το sandbox περιορίζει την πρόσβαση, όχι τη CPU. Ένα κακογραμμένο συστατικό μπορεί να σου κάψει το μηχάνημα χωρίς να αγγίξει ούτε ένα αρχείο, και μένει μέσα στα όρια που του έδωσες.

Εγκατάσταση

Η τεκμηρίωση προτείνει για τα Windows το winget. Μην το ακολουθήσεις. Το paket του winget είναι στην 0.4.0 ενώ η τρέχουσα έκδοση είναι η 0.8.1· τέσσερις εκδόσεις πίσω σημαίνει ότι θα πάρεις παλιό λογισμικό σε ένα εργαλείο που η αξία του είναι ακριβώς να είναι ενημερωμένο. Ο σωστός δρόμος στα Windows είναι το zip από τη σελίδα εκδόσεων, και είναι ένα αρχείο που το αποσυμπιέζεις και το τρέχεις.

Βήμα πρώτο: κατέβασε το αρχείο. Η διεύθυνση που χρησιμοποιήσαμε, και που ελέγξαμε σήμερα ότι απαντά με αρχείο 16.967.083 bytes (16,2 MB), είναι αυτή:

curl -LO https://github.com/microsoft/wassette/releases/download/v0.8.1/wassette_0.8.1_windows_amd64.zip

Βήμα δεύτερο: αποσυμπίεσέ το σε έναν φάκελο δικό σου, για παράδειγμα C:\wassette. Στο δικό μας τεστ το κάναμε με τα χέρια (δεξί κλικ, Extract All) — δεν δοκιμάσαμε άλλη μέθοδο, οπότε δεν σου δίνω εντολή για κάτι που δεν έχω δει να τρέχει.

Βήμα τρίτο: έλεγξε ότι το εκτελέσιμο είναι αυτό που νομίζεις. Από μέσα από τον φάκελο:

wassette.exe --version

Η απάντηση ήταν 0.8.1, χτισμένο στις 19 Οκτωβρίου 2026, 04:11 UTC, από καθαρό tag, με Rust 1.97.1. Μέσα στο zip υπάρχει ένα εκτελέσιμο, wassette.exe, 50.693.120 bytes — περίπου 48,3 MB. Δεν χρειάστηκε εγκατάσταση, δεν πείραξε το PATH, δεν ζήτησε Node, δεν ζήτησε Python. Κατέβασες, αποσυμπίεσες, έτρεξε. Αυτό στις μέρες μας είναι σπάνιο και αξίζει να το πούμε.

Αν θέλεις το εκτελέσιμο στο PATH

Στη δική μας δοκιμή δεν το χρειαστήκαμε: καλούσαμε το wassette.exe με πλήρη διαδρομή μέσα από τον φάκελό του. Θα σου χρειαστεί όταν το δώσεις σε έναν client σαν το Cursor ή το Codex, γιατί αυτοί το ξεκινούν με το όνομά του. Ο απλούστερος δρόμος είναι να αντιγράψεις το wassette.exe μέσα σε φάκελο που είναι ήδη στο PATH, όπως ο %LOCALAPPDATA%\Microsoft\WindowsApps. Δεν το δοκιμάσαμε, οπότε το γράφω ως σύσταση και όχι ως μετρημένο βήμα.

Τι δεν δουλεύει

Το cargo install wassette δεν πρόκειται να δουλέψει. Το συστατικό δεν έχει δημοσιευτεί στο crates.io — η απάντηση είναι ξεκάθαρη: «crate wassette does not exist». Το ίδιο ισχύει για οποιονδήποτε οδηγό που υποθέτει εγκατάσταση μέσω πακέτου Rust.

Το winget install wassette θα δουλέψει, αλλά θα σου φέρει την 0.4.0. Αν το τρέξεις κατά λάθος, ξήλωσέ το και πάρε το zip.

Μια μικρή γραφειοκρατική λεπτομέρεια που θα σε ταλαιπωρήσει πέντε λεπτά: η διεύθυνση του site που δίνει το αποθετήριο, microsoft.github.io/wassette/, επιστρέφει σήμερα 404. Η τεκμηρίωση ζει στο microsoft.github.io/wassette/latest/. Ξεκίνα από εκεί.

Χρήση σε κάθε LLM

Το Wassette μιλά MCP, τη γλώσσα που μιλούν πια όλοι οι clients. Έχει δύο τρόπους να παρουσιαστεί. Ο πρώτος είναι με stdio, για τοπικούς clients, και ξεκινά με μια λέξη:

wassette run

Ο δεύτερος είναι ως απομακρυσμένος server HTTP, αν θέλεις να εξυπηρετεί πολλούς:

wassette serve

Ο κανόνας που ισχύει παντού: δεν χρειάζεται κλειδί, λογαριασμό ή συνδρομή για να το προσθέσεις οπουδήποτε. Η διαφορά είναι μόνο στο πού καταγράφεται ο server σε κάθε client. Πριν προχωρήσουμε, μια ειλικρινής δήλωση: τη διαδρομή MCP του Wassette τη μετρήσαμε κανονικά — 15 εργαλεία, το tools/list σε 0,1 δευτερόλεπτα. Την καταχώριση σε κάθε client δεν τη δοκιμάσαμε σε αυτό το μηχάνημα. Τα βήματα παρακάτω είναι τα βήματα της τεκμηρίωσης του έργου, και το λέω για να ξέρεις τι εγγυώμαι και τι όχι.

Claude Code

Πρώτα εγκατέστησε το Claude Code, αν δεν το έχεις· θέλει Node 18 ή νεότερο:

npm install -g @anthropic-ai/claude-code

Μετά πρόσθεσε το Wassette ως τοπικό server:

claude mcp add wassette -- wassette run

Η σελίδα τεκμηρίωσης του έργου δείχνει μια παραλλαγή με ένα επιπλέον -- πριν από το όνομα. Δεν δοκιμάσαμε καμία από τις δύο μορφές, και η κανονική σύνταξη της εντολής είναι αυτή που βλέπεις πάνω.

Έλεγξε ότι καταχωρήθηκε:

claude mcp list

Αν κάτι πάει στραβά και θέλεις να το βγάλεις:

claude mcp remove wassette

Από εκεί και πέρα δεν γράφεις εντολές. Μιλάς. Ζητάς από τον πράκτορα να φορτώσει ένα συστατικό, μετά του ζητάς να το χρησιμοποιήσει, και μετά του ζητάς άδεια. Η φράση «δώσε στο fetch-rs άδεια δικτύου μόνο για το example.com» είναι αρκετή — ο πράκτορας έχει εργαλείο για αυτό, το grant-network-permission.

Codex CLI

Εγκατέστησε το Codex CLI:

npm install -g @openai/codex

Πρόσθεσε τον server:

codex mcp add wassette wassette run

Τρέξε το codex και γράψε /mcp για να δεις ότι ο server είναι όρθιος και τα εργαλεία ορατά. Σε αντίθεση με άλλους clients, εδώ η καταχώριση είναι μία εντολή και όχι επεξεργασία αρχείου.

Codex CLI μέσω αρχείου ρυθμίσεων

Αν προτιμάς να κρατάς τη ρύθμιση σε αρχείο, εκείνο το αρχείο είναι το %USERPROFILE%\.codex\config.toml. Πρόσθεσε αυτό το μπλοκ:

[mcp_servers.wassette]
command = "wassette"
args = ["run"]

Cursor

Το Cursor δεν έχει εντολή καταχώρισης· έχει αρχείο. Το παγκόσμιο αρχείο είναι το %USERPROFILE%\.cursor\mcp.json, και το ίδιο αρχείο μέσα σε ένα έργο είναι το .cursor/mcp.json. Άνοιξε το και πρόσθεσε:

{
  "mcpServers": {
    "wassette": {
      "command": "wassette",
      "args": ["run"]
    }
  }
}

Μετά κάνε επανεκκίνηση του παραθύρου ή περιόρισε τον server από τις ρυθμίσεις, στο Tools & MCP. Δύο πράγματα που σπάνε αυτή τη ρύθμιση: το JSON δεν επιτρέπει κόμμα στο τέλος (το Cursor το αγνοεί σιωπηλά, χωρίς μήνυμα), και στα Windows το command πρέπει να δείχνει σε εκτελέσιμο που υπάρχει στο PATH. Αν το wassette δεν είναι στο PATH, βάλε πλήρη διαδρομή με διπλά backslash:

{
  "mcpServers": {
    "wassette": {
      "command": "C:\\wassette\\wassette.exe",
      "args": ["run"]
    }
  }
}

Ό,τι ζητήσεις από τον πράκτορα στο Cursor, το εκτελεί το ίδιο εκτελέσιμο που δοκιμάσαμε — με τους ίδιους κανόνες αδειών.

Πού κερδίζει, πού χάνει

Κερδίζει στο πιο σημαντικό. Δεν υπόσχεται ασφάλεια· την επιβάλλει. Στο δικό μας τεστ η άρνηση ήταν μετρήσιμη και ακαριαία, και η άδεια ήταν συγκεκριμένη, όχι γενική. Αυτή η διαφορά — ίδια εντολή, διαφορετικό δικαίωμα, διαφορετικό αποτέλεσμα — είναι το όλο νόημα του εργαλείου, και τη μετρήσαμε με το χρονόμετρο.

Κερδίζει στη διαφάνεια. Η πολιτική δικαιωμάτων είναι ένα αρχείο YAML που το διαβάζει άνθρωπος. Δεν χρειάζεται να ξέρεις τη γλώσσα του συστατικού για να καταλάβεις τι επιτρέπει.

Κερδίζει στο κόστος εισόδου. Ένα αρχείο, ένα εκτελέσιμο, μηδέν εξαρτήσεις, μηδέν κλειδιά. Και η Microsoft το κρατά ενεργό: 18 εκδόσεις, τελευταία πριν από τρεις μέρες, 22 συνεισφέροντες με ανθρώπινα ονόματα.

Κερδίζει στο ότι δεν είναι μόνο του. Το Wassette είναι μέρος ενός οικοσυστήματος — Wasmtime, το μοντέλο συστατικών, το πρότυπο WASI — που δεν το συντηρεί ένα άτομο σε ένα αποθετήριο. Αυτό είναι το είδος θεμελίου που αντέχει.

Τώρα οι παγίδες, και είναι αρκετές.

Δεν είναι έτοιμο για παραγωγή, και το λέει μόνο του. Το README ξεκινά με προειδοποίηση για πρώιμη ανάπτυξη. Αν το βάλεις κάπου σοβαρό, κλείδωσε την έκδοση· μη βάλεις ποτέ latest σε κρίσιμη διαδρομή, γιατί μια αναβάθμιση που δεν κοίταξες μπορεί να αλλάξει όρους.

Το winget είναι τέσσερις εκδόσεις πίσω. Όποιος ακολουθήσει τη σύσταση της τεκμηρίωσης για Windows παίρνει την 0.4.0 αντί για την 0.8.1. Δεν είναι μόνο νούμερο: ό,τι διαβάζεις στην τεκμηρίωση για άδειες, OCI και συμπεριφορά μπορεί να μην υπάρχει στο παλιό δυαδικό.

Υπάρχει σημαία που ανοίγει δικτυακή πρόσβαση δική της. Λέγεται --trust-bundled-policy και κάνει το εξής: δέχεται μια πολιτική δικαιωμάτων που έχει βάλει ο εκδότης του συστατικού μέσα στο πακέτο OCI. Δηλαδή ένα συστατικό μπορεί να έρθει με έτοιμη άδεια δικτύου, γραμμένη από άγνωστο. Είναι κλειστή από προεπιλογή, και όπου δεν είναι κλειστή, η τεκμηρίωση λέει ότι οι διαδρομές φόρτωσης από πράκτορες παραμένουν κλειστές. Μείνετε εκεί.

Οι άδειες είναι ανά συστατικό, όχι ανά κλήση. Αυτό ακούγεται λεπτομέρεια και δεν είναι. Μόλις δώσεις σε ένα συστατικό άδεια για έναν host, κάθε κλήση που θα κάνει σε αυτόν τον host από εκεί και πέρα περνά. Δεν υπάρχει «μία φορά». Το μοντέλο είναι δικαιώματα, όχι εγκρίσεις.

Το sandbox περιορίζει την πρόσβαση, όχι την κατανάλωση. Ένα συστατικό μπορεί να φάει όση CPU θέλει, όσο χρόνο θέλει, μέσα στα όρια που του έδωσες. Η άρνηση-πρόσβασης δεν είναι έλεγχος πόρων.

Το wassette run φορτώνει όλα τα συστατικά του καταλόγου. Καθαρός, χρήσιμος κανόνας: μην ανακατεύεις τα πειραματικά με τα καλά. Κρατά χωριστό κατάλογο για κάθε πείραμα, αλλιώς ο πράκτορας θα βλέπει εργαλεία που έχεις ξεχάσει, με άδειες που έδωσες σε ένα άλλο πλαίσιο.

Και ένα κέρδος που αξίζει να το πεις με μία πρόταση: δεν ζητάει κλειδιά και δεν στέλνει τίποτα έξω πέρα από ό,τι του επιτρέψεις. Στον κόσμο των agents, το «δεν στέλνει τίποτα» είναι σπάνιο προϊόν.

Δοκιμή

Τρέξαμε τα πάντα σε Windows 11, στο μηχάνημα που δουλεύουμε, στις 22 Οκτωβρίου 2026. Κατέβασμα του zip: 16.967.083 bytes (16,2 MB), μέσα ένα εκτελέσιμο, wassette.exe, 50.693.120 bytes. Το --version απάντησε 0.8.1, χτισμένο 19 Οκτωβρίου 2026, 04:11 UTC, με Rust 1.97.1.

Η φόρτωση των συστατικών από το OCI registry ghcr.io είναι η πιο αργή στιγμή της διαδικασίας: το time-server-js πήρε 20,1 δευτερόλεπτα, το get-open-meteo-weather-js 21,3 δευτερόλεπτα, και το fetch-rs κατέβηκε επίσης. Είναι χρόνος δικτύου, όχι υπολογισμού: περιμένεις το registry, όχι το μηχάνημά σου. Την πρώτη φορά τα μετράς στο ημερολόγιο· μετά είναι τοπικά.

Και το πείραμα που μετράει. Καλέσαμε το εργαλείο fetch για τη διεύθυνση https://example.com χωρίς καμία άδεια. Η απάντηση ήρθε σε 0,074 δευτερόλεπτα:

{"err": "ErrorCode::HttpRequestDenied"}

Δώσαμε άδεια μόνο για το example.com:

wassette permission grant network microsoft_fetch-rs example.com

Ίδια κλήση, αυτή τη φορά πέρασε: τράβηξε τη σελίδα σε 0,30 δευτερόλεπτα. Δοκιμάσαμε αμέσως μετά έναν host που δεν είχαμε επιτρέψει, το https://www.iana.org/ — και απάντησε HttpRequestDenied, σε 0,069 δευτερόλεπτα. Ανακαλέσαμε την άδεια, και η αρχική διεύθυνση έκλεισε ξανά. Ίδια εντολή, διαφορετικό δικαίωμα, διαφορετικό αποτέλεσμα. Δεν είναι αφίσα· το είδαμε να συμβαίνει δύο φορές μέσα σε ένα δευτερόλεπτο.

Η πολιτική που προκύπτει είναι το πιο πειστικό κομμάτι του εργαλείου, γιατί τη διαβάζει άνθρωπος που δεν ξέρει τη γλώσσα του συστατικού. Έξι γραμμές, ολόκληρες:

version: "1.0"
description: "example.com only"
permissions:
  network:
    allow:
      - host: "example.com"

Έξι γραμμές. Ένας host. Όλα τα υπόλοιπα κλειστά — και το ξέρεις επειδή το βλέπεις, όχι επειδή σου το υποσχέθηκαν.

Τέλος, η διαδρομή MCP. Ο server συστήθηκε ως rmcp 3.5.1 και δήλωσε 15 εργαλεία. Το tools/list απάντησε σε 0,1 δευτερόλεπτα, και τα σχήματά του πιάσαν 6.486 χαρακτήρες — περίπου 1.622 tokens, δική μας εκτίμηση, όχι μέτρηση τιμοκαταλόγου. Πρόσεξέ το αν δουλεύεις με πράκτορα που έχει στενό παράθυρο: τα εργαλεία του Wassette κατοικούν μόνιμα στο πλαίσιο της συζήτησης, μαζί με τα υπόλοιπα.

Τι κοστίζει

Χρήμα: μηδέν. Είναι ανοιχτού κώδικα με άδεια MIT, δεν ζητάει κλειδί, δεν ζητάει λογαριασμό, δεν στήνει daemon, και δεν στέλνει τίποτα έξω πέρα από τις κλήσεις που του επιτρέπεις εσύ. Το μόνο που πληρώνεις είναι ό,τι κάνει ο πράκτορας από πάνω του.

Δίσκος: το zip είναι 16,2 MB και μέσα του κρύβει ένα εκτελέσιμο 48,3 MB. Στη δική μας δοκιμή, τρία συστατικά από το ghcr.io έπιασαν άλλα 97 MB — τα αρχεία .cwasm είναι προμεταγλωττισμένο WebAssembly, γι’ αυτό είναι μεγάλα, και το κερδίζεις πίσω σε χρόνο εκκίνησης. Είναι δίσκος, όχι μνήμη, και σβήνεται όποτε θέλεις.

Χρόνος: η φόρτωση ενός συστατικού πήρε 20,1 και 21,3 δευτερόλεπτα — χρόνος δικτύου, γίνεται μία φορά και μετά μένει τοπικά. Το tools/list απάντησε σε 0,1 δευτερόλεπτα, και η απορριπτική απάντηση ήρθε σε 0,074 δευτερόλεπτα: η άρνηση δεν κοστίζει χρόνο.

Πλαίσιο, το νούμερο που αξίζει να θυμάσαι: ως MCP server το Wassette δηλώνει 15 εργαλεία και τα σχήματά τους πιάνουν 6.486 χαρακτήρες, δηλαδή περίπου 1.622 tokens σε κάθε συνεδρία — χαρακτήρες διά τέσσερα, δική μας εκτίμηση και όχι μέτρηση τιμοκαταλόγου. Δίπλα του, ο GitHub MCP server δηλώνει γύρω στις 55.000 tokens: ισχυρισμός του κατασκευαστή, όχι δικός μας. Η διαδρομή χωρίς MCP έχει φόρο μηδέν. Αν δουλεύεις με στενό παράθυρο, αυτή η διαφορά κρίνει περισσότερα από την τιμή.

Η ετυμηγορία του κόστους: χρήμα μηδέν, δίσκος λογικός, χρόνος μία φορά, και το μόνο επαναλαμβανόμενο έξοδο είναι το πλαίσιο — που το διαλέγεις εσύ. Ένα εργαλείο ασφάλειας που κοστίζει όσο ένα εργαλείο και όχι όσο ένα cloud, σε έναν χώρο όπου η ασφάλεια συνήθως τιμολογείται σαν πολυτέλεια.

Ετυμηγορία

Το Wassette είναι το πρώτο εργαλείο ασφάλειας για πράκτορες που δοκιμάσαμε και το είδαμε να επιβάλλει τον ισχυρισμό του αντί να τον διαφημίζει. Η διαφορά που το κάνει χρήσιμο δεν είναι η τεχνολογία — το WebAssembly δεν είναι καινούργιο — αλλά η σειρά της λογικής: δεν ρωτά αν ο server είναι κακός, λέει τι επιτρέπεται να κάνει. Αυτό το κάνει ακόμα κι όταν η περιγραφή του εργαλείου λέει ψέματα.

Τι θα κάναμε αύριο με αυτό. Θα το έβαζα στη δουλειά μου για κάθε τρίτο εργαλείο που δοκιμάζω, γιατί η εναλλακτική είναι να δίνω σε άγνωστο κώδικα το δίκτυο ολόκληρο. Δεν θα το έβαζα σε παραγωγή, και δεν θα έβαζα latest πουθενά σοβαρό, γιατί το λέει το ίδιο το έργο ότι είναι πρώιμο.

Αξίζει; Αν δίνεις σε πράκτορες εργαλεία που δεν έγραψες εσύ, αξίζει τον χρόνο. Είκοσι λεπτά το πολύ, και τα μισά είναι το κατέβασμα των συστατικών. Δεν λύνει το πρόβλημα της εμπιστοσύνης· το περιορίζει σε κάτι που μπορείς να το κοιτάξεις στα μάτια: έξι γραμμές YAML.

Σκορ: 8/10.

Πηγές: https://github.com/microsoft/wassette · https://microsoft.github.io/wassette/ · https://github.com/microsoft/wassette/releases