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.
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 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:
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.