StreetVibes is a CLI tool that automatically analyses the 'vibe' of any street using AI. It combines OpenStreetMap data, Mapillary imagery, and local Large Language Models (LLMs) to generate urban planning summaries.
Just type the street name + city, and (if there are Mapillary images), get the summary!
Before installing, make sure you have the following:
- Ollama, installed and running (
ollama serve) - AI models: pull the required models:
ollama pull llava
ollama pull llama3.1- Mapillary client token: You need a free developer token to use Mapillary API.
Clone the repository and perform an editable install. This allows you to modify the code and see changes instantly without reinstalling.
git clone https://github.com/ilyankou/streetvibes.git
cd streetvibes
# Install in editable mode
pip install -e .First, set your Mapillary token as an environment variable (e.g., for Macs, add to your ~/.zshrc):
export MAPILLARY_TOKEN="your_token_here"Then, run the tool with a location query:
$ streetvibes "Shoot-up Hill, London"You can customise the image sampling density, image output directory, and models used:
streetvibes "shoot-up hill, london" \
--points 5 \
--per-point 1 \
--dir street_images \
--v-model llava \
--v-prompt "You are an elderly woman with mobility issues. Focus on sidewalks, crossings, and safety." \
--t-model llama3.1 \
--t-prompt "Summarize the overall street vibe in 3-4 sentences, highlighting livability and safety." \
--json-keys "summary,land_use,walkability,traffic,greenery,safety,maintenance,socio_economic,variations" \
--no-structuredFlags:
--points: Number of locations to sample along the street (default: 5)--per-point: Number of images to download per location (default: 1)--dir: Folder to save downloaded images (default: street_images)--v-model: Vision model for image analysis (default:llava)--v-prompt: Override the vision prompt for persona-based analysis (default: built-in urban planner prompt)--t-model: Text model for summary synthesis (default:llama3.1)--t-prompt: Override the text prompt used to summarize VLM descriptions (default: built-in urban planner prompt)--json-keys: Comma-separated JSON keys for structured output (default:summary, land_use, walkability, traffic, greenery, safety, maintenance, socio_economic, variations)--structured/--no-structured: Toggle structured JSON output (default:--structured)