GoRaven: a self-hosted AI agent harness for teams, reviewed for adoption
Open-source AI Agent platform for teams. Your agents don't just chat — they read files, run code, call APIs, and deliver results.
At a glance
- What is it?
- GoRaven packages an agent runtime, a skill library and RAG into one self-hosted Go service. It is a reasonable fit for teams that want agents touching files and internal APIs, and a poor fit for anyone who wants a managed cloud product.
- Who is it for?
- Adopt GoRaven if your team needs a shared, self-hosted workspace where agents read files, run shell commands and call internal APIs, and you are willing to run a Go service with its own database. Do not adopt it if you want a managed cloud product, or if you need a documented backup and rollback procedure before you commit, because the README does not describe one.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 12 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What GoRaven solves, and for whom
Most agent frameworks ship as libraries. You import them, wire up a loop, and end up maintaining the surrounding product yourself: user accounts, model quotas, tool permissions, a place for the team to share prompts. GoRaven takes the opposite position. It is a complete service, written in Go, that you run on your own hardware and hand to a team.
The README frames the unit of work as a workspace, not a chat window: "GoRaven gives every person on your team an independent Agent workspace." Each person gets an isolated environment, while projects and a skill library are shared. Administrators control model quotas, tool permissions and data access. That is an organisational feature, not a model feature, and it is the clearest reason to pick this over assembling something from parts.
The intended user is a small or mid-sized engineering team that already runs internal services and wants agents to reach them. The README lists the concrete actions an agent takes: reading and writing files, running Shell, calling MCP tool chains, querying a knowledge base, producing reports and charts. If your use case is purely conversational, most of this machinery is dead weight.
The runtime: Go core, Eino orchestration, MCP tools
The repository layout is a conventional Go monorepo: backend/, core/, frontend/, plugins/, config/, util/, with main.go at the root. The frontend is React 18 with TypeScript and Tailwind CSS 4, built separately. The Go module requires Go 1.25.5.
Orchestration does not appear to be hand-rolled. go.mod depends on github.com/cloudwego/eino v0.9.12 and a set of eino-ext model components: claude, gemini, ollama, openai, openrouter and qwen. Tool integration comes through github.com/cloudwego/eino-ext/components/tool/mcp and github.com/mark3labs/mcp-go v0.54.0. That combination is what makes the README's claim about plugging in internal APIs and private services concrete rather than aspirational: MCP is the seam.
Persistence is handled with GORM, and go.mod carries drivers for MySQL, Postgres and SQLite, plus go-redis for caching. System metrics come from gopsutil. The presence of three SQL drivers suggests the deployment target is configurable, though the README does not document which one the Docker image defaults to. That is a gap worth checking in config/ before you plan a production rollout.
A Go core matters here for a mundane reason: the agent loop, tool dispatch and permission checks all live in one process that you can read and patch. Teams that have been burned by Python agent stacks with deep dependency trees will notice the difference.
Installing GoRaven with Docker and completing the first run
The README recommends Docker for anything other than development work, and states that the image bundles the full runtime: Go, Node.js, Python, Git and more. Building from source requires setting those up yourself.
The first command pulls the published image. The tag is latest, so pin a digest yourself if you care about reproducibility.
docker pull 8treenet/goraven:latestThe second command starts the container and publishes port 8000. The README uses the name goraven-agent and sets the restart policy to always.
docker run -d --restart=always --name goraven-agent \
-p 8000:8000 \
8treenet/goraven:latestWithout a volume, data lives inside the container and disappears when it is removed. The README's persistent variant mounts a host directory at /goraven/data.
docker run -d --restart=always --name goraven-agent \
-p 8000:8000 \
-v /opt/goraven:/goraven/data \
8treenet/goraven:latestAfter startup you visit http://localhost:8000 and follow the setup wizard to create the admin account. The README does not describe what the wizard asks for beyond that, so treat the first login as the real test of whether the service is healthy.
The container runs on UTC. To change it, the README gives the TZ environment variable and points at the standard timezone list.
docker run -d --restart=always --name goraven-agent \
-p 8000:8000 \
-e TZ=America/New_York \
-v /opt/goraven:/goraven/data \
8treenet/goraven:latestIf you prefer to build from source, the README gives exactly two steps and warns that you must supply the runtimes yourself.
cd frontend && pnpm build
go run main.goWhere GoRaven is the wrong tool
The design principles section is unusually opinionated, and it defines the boundaries as much as the features. The README states plainly: "We don't do 'memory and evolution'." If your requirement is an agent that accumulates long-term memory across sessions and refines its own behaviour, GoRaven is not built for that, and the maintainers say so rather than leaving it ambiguous.
The same section argues that the model is the Way and the agent is the instrument, and that the agent has three duties: deterministic workflows, precise tool invocation, and execution. That is a philosophy of restraint. It also means the project will not chase features that make agents appear more autonomous than they are.
Operationally, the Docker path assumes you can run containers and expose a port. There is no documented managed offering. The README links RepoCloud for one-click deploy, but everything else assumes you own the host.
The most concrete limitation is documentation coverage. The README covers installation, the setup wizard, timezone configuration and the source build. It does not document backup, restore, rollback between releases, or how to migrate the database when you change drivers. For a service that holds team knowledge and agent history, that is a real gap, and it is the first thing an operations-minded reader will notice.
Scale is also unaddressed. Nothing in the README describes concurrency limits, queueing, or what happens when several people run long agent tasks against the same host. The admin controls cover model quotas and tool permissions, which suggests some resource governance exists, but the mechanism is not described.
GoRaven compared with building on LangChain or Eino directly
The nearest alternative is not another self-hosted product; it is assembling the same thing yourself on top of a library such as LangChain, or on Eino, which GoRaven already depends on. The difference is where the work sits.
With a library, you write the agent loop, then you write the accounts, the workspace isolation, the permission model, the skill packaging, the RAG pipeline and the admin UI. You get exactly the behaviour you specify and you own every line. GoRaven hands you those pieces as a running service and asks you to accept its opinions about them, including the opinion that agents should not carry memory.
There is a middle path visible in the repository: the plugins/ directory and the README's plugin hooks section. The README says hooks cover before and after conversations, tool calls and SSE event streams, and that you can inject custom logic at any lifecycle point "without forking core code." That is the escape hatch. If your customisation fits a hook, you keep the product. If it does not, you are back to reading Go.
The honest framing: GoRaven trades flexibility for a working default. Teams with unusual agent semantics will fight it. Teams that want the standard shape, agents that read files and call tools with per-user isolation, will save months.
Licence, maintenance and upgrade cost
GoRaven is licensed under Apache-2.0, and the repository carries the LICENSE file at the top level. Apache-2.0 permits commercial use, modification and redistribution, and includes an express patent grant. It also requires that you preserve notices and state significant changes. This is a permissive licence with no copyleft obligation on your own code, which matters if you plan to embed GoRaven in something you sell. That is a description of the licence text, not legal advice; have your own counsel read it if the stakes are high.
The repository is not archived, and the last push was on 2026-09-09. Releases are close together: v0.5.1 on 2026-09-01, v0.5.3 on 2026-09-05, and v0.5.4 on 2026-09-09. That cadence tells you the project is moving quickly, and it also tells you the upgrade cost. Pre-1.0 software with releases days apart is software where a minor version can change behaviour. The README does not document a migration path between versions, so the practical approach is to pin a specific image tag rather than track latest, and to read the release notes for each version before moving.
The dependency surface is the other ongoing cost. go.mod pins Eino, the eino-ext model components, mcp-go, GORM and three database drivers. Upstream changes in the model SDKs are the most likely source of breakage, since provider APIs move independently of this project. Budget for periodic dependency bumps, not just feature upgrades.
Editorial conclusion
Adopt GoRaven if your team needs a shared, self-hosted workspace where agents read files, run shell commands and call internal APIs, and you are willing to run a Go service with its own database. Do not adopt it if you want a managed cloud product, or if you need a documented backup and rollback procedure before you commit, because the README does not describe one. Before deploying, verify three things yourself: that the Docker image bundles the runtimes your agents need, that the model endpoint you plan to use is among the supported providers, and that your Postgres or MySQL instance is reachable from the container. The setup wizard at http://localhost:8000 is the first thing to exercise, since the README treats it as the entry point to the whole product.
Frequently asked questions
How do I install GoRaven and get it running for the first time?
Pull the published image with docker pull 8treenet/goraven:latest, then run it with port 8000 published and a volume mounted at /goraven/data if you want the data to persist. After startup, open http://localhost:8000 and complete the setup wizard to create the admin account.
Which AI models does GoRaven support?
The README states it works with OpenAI, Claude, DeepSeek, Qwen, GLM, or any compatible API. The Go module confirms this with eino-ext model components for claude, gemini, ollama, openai, openrouter and qwen.
Does GoRaven store my data on its own servers?
No. The README describes GoRaven as fully self-hosted, with data never leaving your server, and the deployment instructions are Docker commands you run on your own host. Persistence is configured through the volume mounted at /goraven/data.
Can I build GoRaven from source instead of using Docker?
Yes, but the README recommends it only when you need to modify the code. The steps are cd frontend && pnpm build followed by go run main.go, and the README notes that building from source requires setting up the runtimes yourself, which the Docker image already bundles.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/8treenet-goraven)