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.
Apply for the GitHub Student Developer Pack with your
@berkeley.eduaddress. It is free and includes tools we use later in the course.Set up two-factor authentication. GitHub requires it, and if you put it off you may be locked out in the middle of an assignment.
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.
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 run by a consortium of universities and is free for academic use.
Generate a token at nrp.ai/llmtoken
Fair use policy. Please read it, since you share this infrastructure with researchers across the country.
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.
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 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:
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 ask mode
Sign in to GitHub from the editor
Clone a repository, make a commit, and push it
If any of these steps fails, come to Session 2 anyway and bring the error message.