This repository has been archived by the owner on Oct 11, 2024. It is now read-only.
This first release adds a full fledged API for coding assistants while curating team insights, built on top of FastAPI, Ollama, Gradio & Mintlify.
Note: Companion 0.1.0 requires a NVIDIA GPU with 6Gb of VRAM to run it.
Highlights
Local & private code chat
Using your LLM running locally thanks to Ollama 🦙, you can get your coding companion in a chat interface 🦆
Back-end API
REST API for guideline curation and coding assistant powered by LLM:
You can use the cloud version in a very similar fashion:
curl --request POST \
--url https://api.quackai.com/api/v1/code/chat \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": "<string>"
}
]
}'
Developer community
Whether you're a user of the Cloud version or a developer, you can check our documentation.
Also, you can join our Discord to get in touch 🦆
What's Changed
Breaking Changes 🛠
- refactor: Moved guideline fetching and updated scope requirements by @frgfm in #6
- refactor: Turns the "removed_at" column of repos into a boolean "is_active" column by @frgfm in #29
- feat(code): switch fully to ollama as LLM provider by @frgfm in #101
- refactor(models): simplify data model by @frgfm in #107
- fix(migrations): clean the alembic migrations & scratch revisions by @frgfm in #145
New Features ✨
- feat: Adds FastAPI to handle tables users, repos and guidelines by @frgfm in #2
- feat: Adds a route to update the guideline order of a given repo by @frgfm in #3
- feat: Adds GitHub code & token request routes by @frgfm in #4
- feat: Adds product analytics PostHog by @frgfm in #5
- ci: Adds docker build & push by @frgfm in #14
- test: Adds basic test suite for the project by @frgfm in #16
- ci: Adds CI job to autodeploy docker by @frgfm in #17
- test: Adds test suite for first endpoints by @frgfm in #19
- feat: Adds compute route using OpenAI API by @frgfm in #21
- feat: Updates route permissions & telemetry by @frgfm in #22
- test: Adds unittests for all routes but compute by @frgfm in #26
- feat: Updates OpenAI interactions and adds tests by @frgfm in #28
- ci: Adds check of deployment by @frgfm in #30
- feat: Adds route for repo waitlist by @frgfm in #34
- feat: Adds guideline extraction & validation routes by @frgfm in #35
- feat: Adds docker & client for Ollama (preview) by @frgfm in #42
- feat: Adds proper APM using Prometheus and Grafana by @frgfm in #52
- ci: Adds dependabot update configuration by @frgfm in #56
- ci(github): add jobs to verify PR labels and title by @frgfm in #74
- feat(code): add multi-turn chat capabilities by @frgfm in #103
- feat(login): add token validation route by @frgfm in #115
- feat(code): embed guidelines in the code chat by @frgfm in #122
- feat(demo): add a Gradio demo for the code chat by @frgfm in #124
- ci(github): add package publish to ghcr by @frgfm in #135
- docs(mintlify): move the documentation to the companion repo by @frgfm in #141
- feat(demo): add analytics to Gradio demo by @frgfm in #144
- feat(auth): add Supabase auth utils & clean JWT by @frgfm in #154
- feat(llm): enable the choice of LLM provider by @frgfm in #157
- feat(llm): add alternative support of OpenAI API by @frgfm in #163
Bug Fixes 🐛
- ci(github): pin the ssh action version by @frgfm in #76
- fix(login): revert provider user ID format by @frgfm in #112
- fix(dependencies): handle cases where the token isn't JWT compliant by @frgfm in #123
- fix(docker): fix the position of the traefik service in the prod docker compose by @frgfm in #142
Dependencies
- build(deps-dev): Bump gitpython from 3.1.32 to 3.1.34 by @dependabot in #7
- build(deps-dev): Bump gitpython from 3.1.34 to 3.1.35 by @dependabot in #8
- build(deps): Bump urllib3 from 2.0.4 to 2.0.6 by @dependabot in #10
- build(deps): Bump urllib3 from 2.0.6 to 2.0.7 by @dependabot in #12
- ci: Bumps poetry from 1.6.1 to 1.7.1 by @frgfm in #68
- ci: Updates dependabot frequency by @frgfm in #69
- build(deps): Bump the gh-actions group with 6 updates by @dependabot in #57
- build(deps-dev): Bump pytest from 7.4.3 to 8.0.0 by @dependabot in #64
- build(deps-dev): bump ruff from 0.1.9 to 0.1.14 by @dependabot in #60
- build(deps-dev): bump pytest-asyncio from 0.21.1 to 0.23.4 by @dependabot in #75
- build(deps-dev): bump pre-commit from 2.21.0 to 3.6.0 by @dependabot in #80
- build(deps-dev): bump ruff from 0.1.14 to 0.2.0 by @dependabot in #85
- build(deps-dev): bump ruff to 0.2.2 by @frgfm in #91
- build(deps): bump fastapi to 0.110.0 by @frgfm in #108
- build(deps): bump sqlmodel to 0.0.16 by @frgfm in #109
- build(deps): bump pydantic to 2.6.2 by @frgfm in #110
- build(deps-dev): bump ruff from 0.2.2 to 0.3.0 by @dependabot in #111
- build(deps-dev): bump mypy from 1.8.0 to 1.9.0 by @dependabot in #118
- build(deps-dev): bump ruff from 0.3.0 to 0.3.2 by @dependabot in #119
- build(deps): bump the gh-actions group with 1 update by @dependabot in #87
- build(deps-dev): bump pytest from 7.4.4 to 8.0.1 by @dependabot in #92
- build(deps-dev): bump ruff from 0.3.2 to 0.3.3 by @dependabot in #131
- build(deps-dev): bump ruff from 0.3.3 to 0.3.4 by @dependabot in #133
- build(deps-dev): bump ruff from 0.3.4 to 0.3.5 by @dependabot in #147
- build(deps): bump idna & pillow to address security issues by @dependabot in #149
- build(deps-dev): bump ruff from 0.3.5 to 0.3.7 by @dependabot in #150
- build(deps-dev): bump ruff from 0.3.7 to 0.4.0 by @dependabot in #151
- build(deps-dev): bump ruff from 0.4.0 to 0.4.1 by @dependabot in #152
- build(deps-dev): bump mypy from 1.9.0 to 1.10.0 by @dependabot in #153
- build(deps-dev): bump ruff from 0.4.1 to 0.4.4 by @dependabot in #160
- build(deps-dev): bump tqdm from 4.66.2 to 4.66.3 in the pip group by @dependabot in #158
- build(deps): bump ollama to 0.1.38 by @frgfm in #164
Documentation 📖
- docs: Adds aGPLv3 license by @frgfm in #1
- style: Removes bandit & black to switch to ruff by @frgfm in #13
- refactor: Refactors analytics into telemetry module by @frgfm in #20
- feat: Adds a safeguard check of permissions for modifications of repos/guidelines by @frgfm in #31
- refactor: Cleans en vars and setup instructions by @frgfm in #36
- docs: Updates license to Apache 2 & improves documentation by @frgfm in #38
- docs: Adds CODEOWNERS and Security policy by @frgfm in #40
- docs: Updates README hyperlinks by @frgfm in #43
- [ImgBot] Optimize images by @imgbot in #46
- docs: Adds link to docs in the README by @frgfm in #47
- docs: Updates the copyright year by @frgfm in #55
- docs: Adds FOSSA badge for license scan by @frgfm in #54
- refactor(docker): move docker utils to a single folder by @frgfm in #121
- [ImgBot] Optimize images by @imgbot in #127
- refactor(docker): clean docker orchestration for easier setup by @frgfm in #126
- feat(scripts): clean LLM latency benchmark by @frgfm in #132
- docs(benchmark): add throughput evaluation for NVIDIA L4 GPUs by @frgfm in #138
- refactor: rename project to companion & update references by @frgfm in #140
- build(docker): bump ollama to 0.1.32 by @frgfm in #156
Improvements
- chore: Bumps ruff version & fixes typing by @frgfm in #9
- style: Bumps ruff to 0.1.3 by @frgfm in #18
- feat: Improves the compute routes for code analysis by @frgfm in #23
- ci: Removes dangling images by @frgfm in #24
- refactor: Refactors GitHub interactions & adds unit tests by @frgfm in #27
- refactor: Refactors user creation & corresponding telemetry by @frgfm in #32
- feat: Adds permission check shortcut using repo.installed_by by @frgfm in #33
- style: Bumps ruff to 0.1.7 by @frgfm in #37
- chore: Updates poetry dependency sync w/ CI by @frgfm in #39
- feat: Improves guideline extraction pipeline by @frgfm in #41
- refactor: Removes email from telemetry since we don't use it by @frgfm in #44
- fix: Fixes Slack notification formatting by @frgfm in #49
- style: Bumps ruff to 0.1.9 and mypy to 1.8.0 by @frgfm in #51
- perf(openai): update model versions for GPTs by @frgfm in #86
- build(deps): remove multipart by @frgfm in #104
- feat(guideline): enable non-admin users to fetch their own guidelines by @frgfm in #113
- build(uv): replaces pip with uv by @frgfm in #116
- refactor(scripts): improve Ollama performance evaluation by @frgfm in #139
- feat(router): make the router immune to missing trailing slashes by @frgfm in #148
- build(deps): speed up uvicorn by using uvloop & httptools by @frgfm in #162
Other changes
- fix: Fixes CI job to push docker by @frgfm in #15
- fix: Fixes the route input schemas by @frgfm in #25
- fix: Fixes schema validation of guideline extraction pipeline by @frgfm in #45
- fix: Fixed license mention in pyproject by @frgfm in #48
- fix: Fixes thread sorting for review comments by @frgfm in #50
- ci(dependabot): fix dependabot config by @frgfm in #96
- ci(dependabot): update the frequency & filter of dependabot by @frgfm in #102
- build(deps): replace python-jose with pyjwt by @frgfm in #105
- build(deps): remove bcrypt & sqlalchemy direct deps by @frgfm in #106
- style(ruff): bump ruff to 0.3.0 in precommit by @frgfm in #114
- build(docker): bump ollama to 0.1.29 by @frgfm in #120
- ci(github): fix workflow config for deploy by @frgfm in #136
- ci(github): fix dockerhub auth by @frgfm in #137
- ci(github): fix migration & deploy jobs by @frgfm in #143
- fix(docker): moved auth view of gradio to prod by @frgfm in #146
New Contributors
- @frgfm made their first contribution in #1
- @dependabot made their first contribution in #7
- @imgbot made their first contribution in #46
Full Changelog: https://github.com/quack-ai/companion/commits/v0.1.0