https://github.com/hdresearch/nolita
A full-stack framework for building agentic applications
https://github.com/hdresearch/nolita
agent-based-framework browser-automation llm-agent web-browsing
Last synced: 10 months ago
JSON representation
A full-stack framework for building agentic applications
- Host: GitHub
- URL: https://github.com/hdresearch/nolita
- Owner: hdresearch
- License: mit
- Created: 2024-02-14T05:09:40.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T01:25:29.000Z (about 2 years ago)
- Last Synced: 2024-05-01T13:55:11.145Z (about 2 years ago)
- Topics: agent-based-framework, browser-automation, llm-agent, web-browsing
- Language: TypeScript
- Homepage: https://nolita.ai
- Size: 301 KB
- Stars: 48
- Watchers: 6
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING
- License: LICENSE
Awesome Lists containing this project
README
**As of October 2024, this repository is no longer maintained.**
# Nolita
A web-enabled agentic framework by [High Dimensional Research](https://hdr.is).
Interact with the web with an AI model of your choice and build quick runners, pipe into your scripts, or scaffold full-stack applications.
Nolita uses a sandboxed, on-device Chrome instance and supports a variety of AI models, with more on the way.
## Use for quick tasks
If you if you have [Node.js installed](https://nodejs.org/en), it's as easy as running
```sh
npx nolita
```

If you don't include information, we will prompt you for it as we go. The flags you can provide to omit these steps include the following:
- `--startUrl` dictates where we start the session.
- `--objective` specifies what we want our agent to accomplish for us.
- `--agentProvider` sets who is providing the LLM for the task (currently supporting `anthropic` and `openai`).
- `--agentModel` specifies the model in question by the provider.
- `--hdrApiKey` takes your HDR key for persistent memory integration, improving the performance and reliability of tasks.
- `--headless` specifies whether you want the browser to run in headless mode or not. We default to `true`, but you can set it to `false` to see the browser run.
- `--config` takes a JSON file with the previous flags, if you want to provide them. You can also specify an **inventory** of personal data to use for the objective, like usernames and passwords.
```json
{
"agentProvider": "openai", // or process.env.HDR_AGENT_PROVIDER
"agentModel": "gpt-4", // or process.env.HDR_AGENT_MODEL
"agentApiKey": "sk-*********", // or process.env.HDR_AGENT_API_KEY
"inventory": [
{
"value": "student",
"name": "Username",
"type": "string"
},
{
"value": "Password123",
"name": "Password",
"type": "string" }
]
}
```
## Use as part of your stack
```sh
npx nolita serve
```

Runs a local API for objective-first agentic navigation of a local Chrome instance.
The server is set up with all keys first initialized with `npx nolita auth`. After starting the server, you can see the `/doc` folder for the expected JSON payload.
Use `--port` to customize the port.
## Build an app
```sh
npx nolita create
```

Bootstraps a template application built on Express, React, TypeScript, and the core Nolita framework for making a user-facing, web-enabled, agentic product. For more information on using the template, see [its documentation](/docs/src/create.md).
## How does it work?
Nolita drives a Puppeteer installation using local Chrome and parses the accessiblity tree, preprocessing ARIA nodes to add additional accessibility information when necessary.
At the core of the framework is a state machine between Puppeteer and your model that enforces action steps with [Zod](https://github.com/colinhacks/zod).
Since we enforce types at runtime, you can also customize the typed response you get from the navigation process! For more about that, see "[Specifying types](/docs/src/create/types.md)."
## Documentation and examples
To read the complete documentation for Nolita, you can go to the `docs` folder in this repository or access [docs.nolita.ai](https://docs.nolita.ai).
There are also various examples of usage in the [examples folder](/examples/).
## Contributing
Before contributing to this project, please review [CONTRIBUTING](/CONTRIBUTING).
### Building from source
If you want to work from this repo, you can build Nolita with [pnpm](https://github.com/pnpm/pnpm):
```sh
pnpm i
pnpm run build
```
The build outputs to the `dist` folder.
### Community server
To connect with others building with Nolita, feel free to join our [Discord community](https://discord.gg/SpE7urUEmH).
## Other licenses
By default, Nolita sends anonymised, abstracted telemetry to our [collective memory](https://hdr.is/memory), which is governed [by its own license agreement](https://hdr.is/terms) and our [privacy policy](https://hdr.is/privacy).