Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Everything on this page needs to be working before Session 2. It should take under an hour. Bring your laptop and charger.

We link to official documentation rather than reproducing it, because these tools change and their own docs stay current. If a link is stale or a step has changed, tell us on Zulip and we will fix it here.

1. GitHub account

You need a personal GitHub account. Use one you are willing to keep — this is a professional portfolio, and the repositories you build in this course are worth showing to an employer.

Post your username in the course Zulip so we can add you to the espm-157 organization.

2. Berkeley DataHub

Our compute environment. Nothing to install.

Your session has a memory limit, and it is smaller than your laptop’s. This is not an inconvenience we are apologizing for — it is a real constraint that shapes how you write code, and Part 3 of the climate module is built around it.

3. NRP account and API token

The National Research Platform hosts the open-weight language models we use. It is free for academic use, run by a consortium of universities rather than a commercial provider.

Register your own account rather than using a shared class credential. You are a user of this platform, not a guest on someone else’s login.

Keep your token somewhere you can find it again. Treat it like a password: it is tied to your account, and anyone who has it can spend your quota.

4. Kilo Code

Kilo Code is the coding agent extension we use, installed in your editor.

Point it at NRP

NRP speaks the OpenAI Chat Completions API, so Kilo Code talks to it as a custom provider. Everything is configured in the settings panel — you do not need a terminal or an environment variable.

  1. Open Settings (the gear icon) → Providers

  2. Scroll to the bottom and choose Custom provider

  3. Fill in the dialog:

    FieldValue
    Provider IDnrp
    Display nameNRP
    Provider APIOpenAI Compatible
    Base URLhttps://ellm.nrp-nautilus.io/v1
    API keyyour NRP token
  4. Choose deepseek-v4-flash as your model. This is our default for the course, for both writing code and for the API work in Module 4.

Notice what just happened. You gave the extension a base URL, a key, and a model name, and it works — because these are all the same API. Point those three fields somewhere else and everything downstream is unchanged. That portability is a property of open infrastructure, and it is worth noticing that closed systems generally do not offer it.

Set it to plan mode

Kilo Code has several modes. We use plan mode for this module.

Plan mode has read-only access to your project, plus the ability to write plan files under .kilo/plans/. It can read your code and your data and propose what to do; it cannot rewrite your notebook while you watch. code and debug modes have full write access. We will get there later in the course, deliberately.

That restriction is the whole point, and it is enforced by the mode rather than by your vigilance. You do not need to change any other settings: in plan mode there is nothing dangerous to approve, because the tools that change things are not available. When we move to code mode in a later module, approval settings become worth a conversation — and we will have it then, rather than teaching you to click through prompts now.

5. GitHub authentication in your editor

You will sign in to GitHub from inside the editor, using GitHub’s device authorization flow.

This is deliberate, and worth understanding rather than clicking through.

Your editor holds this credential in a way your coding agent cannot read. That means the agent cannot push to GitHub on your behalf. Committing and pushing your work is something you do, every time. It is the one step in this course we are not automating, because a record of your work that you did not create is not a record of your work.

Checklist

Before Session 2 you should be able to:

If any of these fails, come to Session 2 anyway and bring the error message.