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.
Apply for the GitHub Student Developer Pack with your
@berkeley.eduaddress. It is free and unlocks tools you will use later.Set up two-factor authentication. GitHub requires it, and you will be locked out mid-assignment if you put this off.
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.
Log in at nature
.datahub .berkeley .edu with CalNet.
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.
Generate a token at nrp.ai/llmtoken
Fair use policy — read this. You share this infrastructure with researchers across the country.
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.
Open Settings (the gear icon) → Providers
Scroll to the bottom and choose Custom provider
Fill in the dialog:
Field Value Provider ID nrpDisplay name NRPProvider API OpenAI Compatible Base URL https://ellm.nrp-nautilus.io/v1API key your NRP token Choose
deepseek-v4-flashas 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:
Log in to GitHub with 2FA enabled
Start a server on nature
.datahub .berkeley .edu Generate an NRP token
Configure Kilo Code with the NRP custom provider and
deepseek-v4-flashConfirm Kilo Code is in plan mode
Sign in to GitHub from the editor
Clone a repository, make a commit, and push it
If any of these fails, come to Session 2 anyway and bring the error message.