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 work before Session 2. It should take less than an hour. Bring your laptop and charger to class.

We link to the official documentation for each tool because these tools change often and their own documentation stays current. If a link is stale or a step has changed, tell us on Zulip and we will fix this page.

1. GitHub accountΒΆ

You need a personal GitHub account. Choose one you are willing to keep, because the repositories you build in this course form a professional portfolio that you can show to an employer.

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

2. Berkeley DataHubΒΆ

DataHub is our compute environment, and it requires no installation.

3. NRP account and API tokenΒΆ

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

Register your own account instead of using a shared class credential. You are a user of the platform in your own right.

Keep your token somewhere you can find it again and 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 we use. It runs as an extension in your editor.

NRP providerΒΆ

NRP serves the OpenAI Chat Completions API, so Kilo Code connects to it as a custom provider. All of the configuration happens in the settings panel, and 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 the course default, both for writing code and for the API work in Module 3.

The extension needs only a base URL, a key and a model name, because every provider in the list serves the same API. If you change those three fields to point at another provider, everything downstream stays the same. Open infrastructure gives us this portability, and closed systems generally do not.

Ask modeΒΆ

Kilo Code has several modes. We use ask mode for Module 1 and code mode from Module 2 onward.

Ask mode has read-only access to your project: the agent can read your code and data and suggest what to write, but you run the code yourself. Code mode has full write access, so the agent can edit files and run code. We switch to code mode at the start of Module 2.

5. GitHub authentication in the editorΒΆ

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

We set things up this way on purpose. Your editor stores this credential where your coding agent cannot read it, so the agent cannot push to GitHub on your behalf. You commit and push your own work every time. This is the one step in the course that we do not automate, because the commit history is the record of your work and you should be the one who creates it.

ChecklistΒΆ

Before Session 2 you should be able to:

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