always use ollama binary

This commit is contained in:
Jeffrey Morgan 2023-07-06 14:32:48 -04:00
parent 7cf5905063
commit 39f4d8edaa
3 changed files with 27 additions and 4 deletions

View file

@ -6,10 +6,10 @@ This app builds upon Ollama to provide a desktop experience for running models.
## Developing
In the background run the ollama server `ollama.py`:
First, build the `ollama` binary:
```
poetry -C .. run ollama serve
make -C ..
```
Then run the desktop app with `npm start`:

View file

@ -8,6 +8,7 @@ import { AutoUnpackNativesPlugin } from '@electron-forge/plugin-auto-unpack-nati
import { WebpackPlugin } from '@electron-forge/plugin-webpack'
import * as path from 'path'
import * as fs from 'fs'
import * as os from 'fs'
import { mainConfig } from './webpack.main.config'
import { rendererConfig } from './webpack.renderer.config'
@ -19,7 +20,7 @@ const config: ForgeConfig = {
appVersion: process.env.VERSION || packageJson.version,
asar: true,
icon: './images/icon',
extraResource: ['../ollama', '../ggml-metal.metal'],
extraResource: ['../ollama', ...(process.platform === 'darwin' ? ['../ggml-metal.metal'] : [])],
...(process.env.SIGN
? {
osxSign: {

View file

@ -57,6 +57,25 @@ if (app.isPackaged) {
})
}
function server() {
const binary = app.isPackaged
? path.join(process.resourcesPath, 'ollama')
: path.resolve(__dirname, '..', '..', 'ollama')
console.log(`Starting server`)
const proc = spawn(binary, ['serve'])
proc.stdout.on('data', data => {
console.log(`server: ${data}`)
})
proc.stderr.on('data', data => {
console.error(`server: ${data}`)
})
process.on('exit', () => {
proc.kill()
})
}
function installCLI() {
const symlinkPath = '/usr/local/bin/ollama'
@ -93,7 +112,10 @@ function installCLI() {
// Some APIs can only be used after this event occurs.
app.on('ready', () => {
createWindow()
if (app.isPackaged) {
installCLI()
}
})
// Quit when all windows are closed, except on macOS. There, it's common