# The frame conduit cloud **🟡 Intermediate · Lesson 37** THE CONDUIT CLOUD - the frame's shared registry of conduits, and the first object in this tier that is owned by the WORLD rather than by you. You reach it from any conduit: cloud = conduit.get_conduit_cloud() And here is the sentence that matters, from melder's own contract: "Reaches THROUGH the aetheric frame to the frame-owned cloud, so the returned object is SHARED BY EVERY CONDUIT ON THE FRAME." So `get_conduit_cloud()` is not a factory and not a per-conduit view. Two conduits on the same frame hand you THE SAME OBJECT. Ask any of them, get the same registry - which is what makes it a trustworthy place to answer "what conduits exist here?" Frames are worlds (advanced 03), and the cloud is a world-level object. Different frame, different cloud - the wall holds here too. WHAT IT ANSWERS - all cheap reads over the frame's conduits: frame_name which world am I the registry for count_conduits() how many list_conduit_ids() by id list_conduit_names() by name has_conduit_id/name() membership without fetching find_conduit_id_by_name(name) -> id or None get_conduit_by_id/name() the actual object AND THE CLUSTER HALF, which is dynamic-mode territory: list_cloud_names() / has_cluster_name() / get_cluster() create_cluster() / delete_cluster() add_conduit_to_cluster() / remove_conduit_from_cluster() get_clusters_for_conduit() / refresh_cluster_shares_for_conduit() Clusters are how conduits share lineage as a group. This lesson names that surface and stays on the registry half; the cluster lifecycle is its own subject. WHY THE READS MATTER MORE THAN THEY LOOK `find_conduit_id_by_name` returning Optional rather than raising is the honest shape for a lookup that may legitimately miss - and it pairs with has_conduit_name() so you can ask the membership question without paying for the object. Cheap questions before expensive ones, the same discipline as the describe ladder at advanced 16. YOU REACH THIS OBJECT; YOU NEVER NAME IT. `ConduitCloud` is NOT on the package root (owner ruling 2026-08-04) and that is deliberate, not an oversight. Its constructor needs an `AethericFrame` and a `DevopsInformationRegistry` - neither exported, neither defaulted - so `md.ConduitCloud(...)` could never have been called. Its own docstring says it: "users do not construct one." An exported name you cannot construct advertises a door that is painted on. It is the same ruling `Scan` got: `Spellbook.scan(module)` is the API because it applies the posture gate and the bind transaction, so exporting the class only advertised a way around them. Here there is not even a way around - just a name. THE REACH IS UNCHANGED. `conduit.get_conduit_cloud()` still hands you the live object and every verb below still works. What you lose is `isinstance(cloud, md.ConduitCloud)`, and the honest replacement is to test what the object DOES - which is what this lesson now does, and arguably what it should have done from the start. ## Before you run Use the [Intermediate guide](../../intermediate/index.md) for prerequisite concepts. Run from a checkout with Melder installed and Python 3.14 free-threading selected. The collection download includes the level's local helper modules. ## Run the saved script ```bash python UX_and_AIX_experiences/02_intermediate/37_the_frame_conduit_cloud.py ``` ```powershell py -3.14t UX_and_AIX_experiences/02_intermediate/37_the_frame_conduit_cloud.py ``` {download}`Download this collection <../../downloads/intermediate-examples.zip>` · [Source on GitHub](https://github.com/Synaptic724/melder/blob/0895ce795453cd87e35d70665957b4e89aad3317/UX_and_AIX_experiences/02_intermediate/37_the_frame_conduit_cloud.py) ## Public surface conduit.get_conduit_cloud(), the frame-shared registry law, the read surface. NOTE: no `md.ConduitCloud` - the type is reached, never named. ## Code ```{literalinclude} ../../downloads/02_intermediate/37_the_frame_conduit_cloud.py :language: python :linenos: ``` ## Check the outcome The script contains its own assertions or demonstrated refusal paths. Run it to evaluate those checks against your installed version. The code above is taken directly from the saved file; no run output is invented here. [More intermediate examples](index.md) · [Level guide](../../intermediate/index.md) ## Related guides - [Named conduits, transfer, and sever](../../intermediate/ownership.md)