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.

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 ask modeยถ

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

Ask mode has read-only access to your project. code and debug modes have full write access. We will get there later in the course, deliberately.

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.