> ISPO SDK documentation. [HTML](https://ispo.ai/docs/variables/core.shared.html) · [Documentation index](https://ispo.ai/docs/llms.txt)

# Variable shared`Const`

```typescript
shared: {
    list: (path?: string | undefined) => Promise<string[]>;
    put: (
        content: string | Uint8Array<ArrayBufferLike>,
        options?: { name?: string },
    ) => Promise<SharedPutResult>;
    read: (path: string) => Promise<string>;
    write: (path: string, content: string) => Promise<SharedWriteResult>;
    writeBinary: (
        path: string,
        content: Uint8Array,
    ) => Promise<SharedWriteResult>;
} = ...
```

Types: [SharedPutResult](../interfaces/core.SharedPutResult.md), [SharedWriteResult](../interfaces/core.SharedWriteResult.md)

App-shared backing tier — your own per-app subtree under `~/ISPO/shared/` (spec §19). Writes are PATH-ADDRESSED into your own subtree and need no grant: an app overwriting its own outputs is free. Each write returns the resolved identity (`{ path }`) instead of `void`.

*   `write` / `writeBinary` are path-addressed: you choose a stable relative path (an app index, `useSharedFile`), overwrite your own files freely, and the host resolves it into your subtree. Addressing another app's subtree is structurally impossible (the own-subtree boundary predicate).
*   `put` mints a collision-free opaque path under your subtree and returns `{ path, url }`, where `url` is an opaque asset ref for rendering the bytes. Treat it as backing storage plumbing; use `files.save` or `files.publish` when the user should see or share an artifact through Files.
*   `read` / `list` resolve inside your own subtree, symmetric with writes. Known cross-app backing bytes are consumed through returned `assets://` URLs or through Files picker copies, not through a shared-storage grant.

#### Type Declaration

*   ##### <a id="list"></a>list: (path?: string | undefined) \=> Promise<string\[\]\>
    
*   ##### <a id="put"></a>put: (  
        content: string | Uint8Array<ArrayBufferLike\>,  
        options?: { name?: string },  
    ) \=> Promise<[SharedPutResult](../interfaces/core.SharedPutResult.md)\>
    
*   ##### <a id="read"></a>read: (path: string) \=> Promise<string\>
    
*   ##### <a id="write"></a>write: (path: string, content: string) \=> Promise<[SharedWriteResult](../interfaces/core.SharedWriteResult.md)\>
    
*   ##### <a id="writebinary"></a>writeBinary: (path: string, content: Uint8Array) \=> Promise<[SharedWriteResult](../interfaces/core.SharedWriteResult.md)\>
    

#### <a id="deprecated"></a>Deprecated

Retained only for one-shot legacy importers. Use Entities, Files, or Assets according to the data's product meaning.
