> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Local filesystem

> Provides access to the local Alumio filesystem.

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Read and write files in Alumio's own storage, on the server where Alumio runs. Use this when a task needs a working area to drop files into, build up exports, or stage files between steps, without connecting to an outside server. Every path you use is relative to the root directory you choose here.

This documentation describes: [Schema](/schemas/filesystem/local)

## Fields

<FormField property="root" label="Root directory" required>
  The folder inside Alumio's storage that this connection works in. All reads and writes are relative to it, so you do not have to repeat it in each path. Pick a clear name such as `exports` or `inbound` to keep different tasks separate.
</FormField>

<FormField property="writeFlags" label="Write flags">
  Controls how files are written. The default, **Exclusive lock**, locks a file while Alumio writes to it so two writes cannot clash. **Append to file** adds to the end of an existing file instead of replacing it. The remaining options combine these behaviours. Leave it on the default unless you specifically need appending or locking changed.
</FormField>

<FormField property="logger" label="Logger" diType="filesystem-logger">
  Selects how file activity on this connection is recorded, so you can trace which files were read or written.
</FormField>

## Sample data

A connection that works inside an `exports` folder in Alumio's storage.

| Field          | Value                    |
| -------------- | ------------------------ |
| Root directory | `exports`                |
| Write flags    | Exclusive lock (default) |

With this configuration, a task that writes `orders.csv` stores the file at `exports/orders.csv` in Alumio's storage.

```json Configuration theme={null}
{
  "prototype": "local",
  "parameters": {
    "root": "exports"
  }
}
```
