---
title: Prerequisites
description: Required setup's before setting up SurfSense
full: true
---

## PGVector installation Guide 

SurfSense requires the pgvector extension for PostgreSQL:

### Linux and Mac

Compile and install the extension (supports Postgres 13+)

```sh
cd /tmp
git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # may need sudo
```

See the [installation notes](https://github.com/pgvector/pgvector/tree/master#installation-notes---linux-and-mac) if you run into issues

### Windows

Ensure [C++ support in Visual Studio](https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#download-and-install-the-tools) is installed, and run:

```cmd
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
```

Note: The exact path will vary depending on your Visual Studio version and edition

Then use `nmake` to build:

```cmd
set "PGROOT=C:\Program Files\PostgreSQL\16"
cd %TEMP%
git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
nmake /F Makefile.win
nmake /F Makefile.win install
```

See the [installation notes](https://github.com/pgvector/pgvector/tree/master#installation-notes---windows) if you run into issues



## File Upload's

Files are converted to LLM friendly formats using [Unstructured](https://github.com/Unstructured-IO/unstructured)

1. Get an Unstructured.io API key from [Unstructured Platform](https://platform.unstructured.io/)
2. You should be able to generate API keys once registered
![Image](/docs/unstructured.png)

## Google OAuth Setup

SurfSense user management and authentication works on Google OAuth.

1. Set up OAuth Client at [Google Developer Console](https://developers.google.com/identity/protocols/oauth2)
2. Enable People API.
3. Note your OAuth Client.

## LLM Observability (Optional)

For monitoring LLM interactions:

1. Get a LangSmith API key from [smith.langchain.com](https://smith.langchain.com/)
2. This helps in observing SurfSense Researcher Agent operations

## Crawler Support

SurfSense currently uses [Firecrawl.py](https://www.firecrawl.dev/) for web crawling.

## API Keys

Prepare the following API keys:

1. LLM API keys (OpenAI, Gemini, etc.) based on your selected models
2. Unstructured.io API key
3. Firecrawl API key (if using the crawler)

## Next Steps

Once you have all prerequisites in place, proceed to the [installation guide](/docs/installation) to set up SurfSense.