title: Artifact
---
summary: Represents an artifact during the build process.
---
type: class
---
body:

During the build process Lektor creates artifact objects to represent final
build artifacts.  Generally each [Source Object :ref](../../db/obj/) will
generate one artifact for which it acts as a primary source.

There are however many cases in which a source object will create
sub-artifacts.  For instance any thumbnail created in the context of a page
will be creating its own artifact.  To give plugins the same ability the
artifact system is partially documented.  See also [sub_artifact
:ref](../context/sub-artifact/) to see how to create your own artifact
instances.

The most important function of an artifact is [open :ref](open/) which can
open the artifact for reading or writing.  If the build goes well, Lektor
will commit those changes and persist them.

## Example

```python
ctx = get_ctx()
@ctx.sub_artifact('artifact.txt')
def build_stylesheet(artifact):
    with artifact.open('w') as f:
        f.write('Hello World!\n')
```