# Jupyter Notebooks

## Get a token

Use the [Pipekit CLI](https://docs.pipekit.io/cli) to generate a token using `pipekit hera` (ensure you are logged in first).

You can then pass this token to a `PipekitService`:

```py
from pipekit_sdk.service import PipekitService

# Create a Pipekit service that is used to talk to the Pipekit API
pipekit = PipekitService(token="<token>")
```

## Submission

Create a Workflow to submit:

```py

from hera.workflows import DAG, Workflow, script

@script(image="python:3.12")
def echo(message):
    print(message)

with Workflow(
    generate_name="dag-diamond-",
    entrypoint="diamond",
    namespace="argo",
    service_account_name="argo-workflow",
) as w:
    with DAG(name="diamond"):
        A = echo(name="A", arguments={"message": "A"})
        B = echo(name="B", arguments={"message": "B"})
        C = echo(name="C", arguments={"message": "C"})
        D = echo(name="D", arguments={"message": "D"})
        A >> [B, C] >> D
```

Then use `submit` to run the Workflow on Pipekit, remember to pass in your cluster name.

```py
# Submit the Workflow to Pipekit
pipe_run = pipekit.submit(w, "<cluster-name>")
print("pipe_run", pipe_run, "\n")
```

## Log Streaming

After you have submitted a Workflow as above, you will be holding a "pipe\_run" - you can stream the logs to your Notebook using `print_logs` on the `uuid`:

```py
pipekit.print_logs(pipe_run["uuid"])
```
